我有一个非常大的.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]
任何关于如何用熊猫来完成这项任务的想法?先谢谢你们。
答案 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(' ')
测试数据的结果:
pandas语法在中间选择正确的行;[&#39;你好#1&#39;,&#39;狼#1&#39;,&#39;网络#1&#39;,&#39;鼠标#3&#39;]
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()