【问题标题】:How create a list with some specific values with pandas?如何用熊猫创建一个包含一些特定值的列表?
【发布时间】:2015-05-28 15:01:16
【问题描述】:

我有一个非常大的.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,在column3 中具有大于0 的浮点数,并将它们放入一个列表中,例如,对于上面的例子,这将是输出:

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

知道如何用 pandas 完成这项任务吗?在此先感谢各位。

【问题讨论】:

  • 你想只附加第四列的值吗?
  • 感谢@AvinashRaj 的提要。是的,第四列的所有值
  • 感谢@cphlewis 的评论
  • 我已经编辑了.. 是的,我知道这可以帮助将来的人! @cphlewis
  • 您想要一个包含所有值还是唯一值的列表?

标签: python list python-2.7 csv pandas


【解决方案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)

【讨论】:

  • @cphlewis 我明白你现在的意思了。谢谢指正。
【解决方案2】:
' '.join(df[df.column3 > 0].words).split(' ')

测试数据结果:

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

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

【讨论】:

    【解决方案3】:

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

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

    您可以通过这样做将其转换为列表

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

    或者使用numpy数组方法,会比上面更快:

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

    【讨论】:

    • 非常感谢您的提示,unquie()unique()?
    • 抱歉打错了,马上改正
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2021-12-17
    • 2017-06-26
    • 1970-01-01
    • 2022-06-20
    • 2021-09-29
    • 2020-12-27
    • 2019-09-23
    相关资源
    最近更新 更多