2016-12-22 47 views
-1

我有一個for循環遍歷數據框的每一行。現在,當某些表達式匹配時,我想將匹配的行添加到新的數據框中。將循環內生成的行添加到新的數據框中

這是我做了什麼:

dfWithSand3 = pd.DataFrame() 
for index, row in df.iterrows(): 
    if row['embarked'] == 'S' and row['pclass'] == 3: 
     dfWithSand3.append(row) 
print(dfWithSand3) 

這裏,pdpandasdf是數據幀。

每當下面的表達式是True我想將行添加到數據幀dfWithSand3

if row['embarked'] == 'S' and row['pclass'] == 3: 

眼下的數據幀dfWithSand3的值是:

Empty DataFrame 
Columns: [] 
Index: [] 

下面是一個可能的row值可以是什麼樣子

Unnamed: 0  600 
survived   0 
pclass   3 
sex   male 
age    42 
sibsp   0 
parch   0 
fare   7.55 
embarked   S 

我不知道是否行表示數據幀與否。

此外,如何將行添加到我創建的新數據框?

回答

1

IIUC你能做到這樣:

dfWithSand3 = df.loc[(df.embarked == 'S') & (df.pclass == 3)].copy() 

,或者如果您不希望保留原來的索引值:

dfWithSand3 = df.loc[(df.embarked == 'S') & (df.pclass == 3)].reset_index().copy() 
+0

所以我不需要任何循環或任何額外的東西? – Cybercop

+1

@Cyber​​cop,是的,我們希望避免循環,當使用Pandas/Numpy/scipy – MaxU

+0

好吧,你想讓大熊貓做它自己的循環,這樣它可以進一步優化python中的for循環。 –

相關問題