【问题标题】:Generate a list (including missing values) from a Pandas data frame column从 Pandas 数据框列生成列表(包括缺失值)
【发布时间】:2016-03-13 00:46:11
【问题描述】:

这是我正在使用的简单 Pandas 数据框:

>>> df2
    Name  Day  Score
0  Allen    1     25
5  Allen    3      9

我要做的是生成一个艾伦的分数列表,并在从 1 到 5 的所有日子里都没有分数时发出信号。这是我能够做到的:

>>> [df2[df2['Day']==i]['Score'].values[0] if i in list(df2['Day']) else None for i in range(1,6)]
[25, None, 9, None, None]

肯定有一种不那么笨重的方法来做到这一点? 这是什么?

在相关说明中,我想为更大数据框中的每个人执行此操作。最好的方法是什么?现在我能想到的只是将 apply 与上面的表达式一起使用,但这似乎比这应该更笨重。感谢您的任何建议!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我首先将索引设置为“Day”并重新建立索引:

    >>> df2 = df2.set_index('Day').reindex(range(1,6))
    
          Name  Score
    Day              
    1    Allen     25
    2      NaN    NaN
    3    Allen      9
    4      NaN    NaN
    5      NaN    NaN
    

    从那里你有很多选项可以进一步处理。如果你只想要一个列表:

    >>> df2['Score'].tolist()
    
    [25.0, nan, 9.0, nan, nan]
    

    您可能需要查看fillna() 以了解有关指定缺失值的不同选项。

    【讨论】:

    • 我不明白重新索引的作用是什么?
    • @MonicaHeddneck 将索引从 [0,5] 更改为 [1,2,3,4,5]。看看OP的原始数据。
    • 当然可以,但是为什么需要重置索引?
    • @MonicaHeddneck 这本身没有必要,这只是我用来在这里得到答案的中间步骤。如果您有更喜欢的替代方法,我真诚地鼓励您发布它。这只是我当时能想到的最好的,自从我最初发布它以来我还没有看过它(所以我对这个的整体记忆很模糊)
    猜你喜欢
    • 2014-01-08
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多