2016-12-22 16 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

を使っているときにループを避けたいのですが、pandasに自分自身のループ処理をさせたいので、Pythonの 'for'ループをさらに最適化することができます。 –

関連する問題