如何使用pandas创建包含某些特定值的列表?

时间:2015-03-25 04:03:28

标签: python list python-2.7 csv pandas

我有一个非常大的.csv文件,如下所示:

column1,id,column3,column4,words,column6
string,309483,0,0,hi#1,string string ....
string,234234,0.344,0,hello#1,string string ....
...
string,89789,0,.56799,world#1,string string ....
string,212934,0.8967,0,wolf#1 web#1 mouse#3,string string ....

我想在列表中提取words中大于0的浮点数的所有column3并将它们放入列表中,例如,对于上面的例子,这将是输出:

[hello#1, wolf#1, web#1, mouse#3]

任何关于如何用熊猫来完成这项任务的想法?先谢谢你们。

3 个答案:

答案 0 :(得分:1)

<强>校正:

您可以使用iterrows执行此操作,但上述解决方案并不简洁:

import itertools

your_list = list(row[1]['words'].split(' ') for row in dataframe.iterrows() if row[1]['column 3'] > 0)
chain = itertools.chain(*your_list)
your_list = list(chain)

答案 1 :(得分:1)

' '.join(df[df.column3 > 0].words).split(' ')

测试数据的结果:

  

[&#39;你好#1&#39;,&#39;狼#1&#39;,&#39;网络#1&#39;,&#39;鼠标#3&#39;]

pandas语法在中间选择正确的行; join所有单词 - colunn值合在一起,split将它们分成单独的单词。

答案 2 :(得分:1)

如果您想要所有唯一单词的列表:

df[df.column3 > 0].words.unique()

您可以通过

将其强制转换为列表
list(df[df.column3 > 0].words.unique())

或使用比上面更快的numpy数组方法:

df[df.column3 > 0].words.unique().values.tolist()