2017-12-07 7 views
0

パンダに[Iカラムに基づいてデータセットの列の範囲を選択する(最初の行はヘッダである)私のデータセットは、このようになり

0 1 2 3 4 5 
1 3 4 6 2 3 
3 8 9 3 2 4 
2 2 3 2 1 2 

を別の列の値の列ベースの範囲を選択5]、例えば:

1 3 4 
3 8 9 3 
2 2 

私は次のことを試してみましたが、それはうまくいきませんでした:

df.iloc[:,0:df['5'].values] 
+0

を再作成しますか?データフレームの場合、欠損値をnansに置き換えますか? – angelwally

答えて

2

はのは、試してみましょう:

df.apply(lambda x: x[:x.iloc[5]], 1) 

出力:

 0 1 2 3 
0 1.0 3.0 4.0 NaN 
1 3.0 8.0 9.0 3.0 
2 2.0 2.0 NaN NaN 
+0

いいですね:-)私は 'apply'の使い方が好きです – Wen

+0

@Wenありがとうございます。あなたのソリューションはより速いと思います。 :) –

+0

'apply'はもっと綺麗です:-) – Wen

2

は、あなたがしたい出力のどのようなあなたのデータフレーム

df=pd.DataFrame([x[:x[5]] for x in df.values]).fillna(0) 
df 
Out[184]: 
    0 1 2 3 
0 1 3 4.0 0.0 
1 3 8 9.0 3.0 
2 2 2 0.0 0.0 
関連する問題