2017-01-20 107 views
4

我要追加空行(充滿np.NaN)的熊貓數據幀,目前只知道如何做到這一點使用LOC追加空行數據幀中的大熊貓

T = pd.DataFrame(index=['a', 'b', 'c'], data={'Col0': 0, 'Col1': 1}) 
T 
    Col0 Col1 
a  0  1 
b  0  1 
c  0  1 

missing = ['d', 'e'] 
for m in missing: 
    T.loc[m] = np.NaN 

    Col0 Col1 
a 0.0 1.0 
b 0.0 1.0 
c 0.0 1.0 
d NaN NaN 
e NaN NaN 

你知道的更多優雅這樣做的方法?

爲什麼它是不可能做這樣的事情

T.loc[missing] = np.NaN 

THX!

回答

4

您可以reindex採取目前的指數和缺失行值的union

In [281]:  
T.reindex(T.index.union(missing)) 

Out[281]: 
    Col0 Col1 
a 0.0 1.0 
b 0.0 1.0 
c 0.0 1.0 
d NaN NaN 
e NaN NaN 

基本上loc會在標籤過去了,遺憾的是setting with enlargement僅適用於單一的行標籤。

這樣做會更有效率,這裏我們取union的當前索引和缺失值,並將這些用於reindex的df,其中行不存在NaN值被插入。

1

您可以使用.loc非常相似reindex

df.loc[df.index.tolist() + missing] 
0

如果你確實有一個數據幀,可以使用pd.concat

df = pd.DataFrame(index=missing) 

pd.concat([T, df]) 

或者,你可以使用pd.DataFrame.append

df = pd.DataFrame(index=missing) 

T.append(df) 

兩個產量:

Col0 Col1 
a 0.0 1.0 
b 0.0 1.0 
c 0.0 1.0 
d NaN NaN 
e NaN NaN 
+0

爲什麼'名 '失蹤' 是沒有定義 ' – sikisis

+0

@sikisis因爲你沒有定義它。見OP ...它定義爲'missing = ['d','e']' – piRSquared