2016-05-22 10 views
2

Pythonの:パンダのデータフレームをフィルタリングする最もクリーンな方法は?

pd.read_csv("CME-datasets-codes.csv", header=None) 

が生成されます

0    1 
0 CME/OH2014  Oats Futures, March 2014, OH2014, CBOT 
1 CME/HGG2004  Copper Futures, February 2004, HGG2004, COMEX 
2 CME/BRH2014  Brazilian Real (BRL/USD) Futures, March 2014, ... 
3 CME/F5H2014  PJM PPL Zone Off-Peak Calendar-Month Day-Ahead... 
4 CME/PDMU2016 MISO Indiana Hub Day-Ahead Peak Calendar-Month... 

私はクリーンな方法は何私のコラム0

に "CME/C" で始まるすべての行を表示するために、これをフィルタリングします?

答えて

8
df[df[0].str.startswith('CME/C')] 
+0

列名 'df [df ['0']を引用する必要があります。str.startswith( 'CME/C')]' – Romain

+1

これは実行されません。 OPは 'header = None'オプションを使ってcsvを読み込むので、pandasは整数を使って列に番号を付けます。 'df ['0']'はエラーを投げます。 –

+1

代わりに、 'loc' - ' df [df.loc [:, 0] .str.startswith( 'CME/C')] ' – jezrael

2

あなたは行うことができます。

df[df.0.str[:5]=="CME/C"] 
2

簡単で醜いルートが

df[df['column_name'] == value]

一見、これが唯一の等式をキャッチすることができますが、現実には、任意のベクトル化機能これを技術的に適用することができます。そのように、あなたが使用することができます。

df[df['column_name'].str.startswith('CME\/C')]

をもう少しエレガントに見えるようにマスキングなどの他の方法は、あります。しかし、彼らは効果的ではなく、必ずしも価値がありません。 )

関連する問題