Python 从数据帧列生成列表(包括缺少的值)

Python 从数据帧列生成列表(包括缺少的值),python,pandas,Python,Pandas,以下是我使用的简单熊猫数据框: >>> df2 Name Day Score 0 Allen 1 25 5 Allen 3 9 我想做的是生成一个Allen分数的列表,并在1到5之间的所有天数中显示没有分数的天数。以下是我能够做到的: >>> [df2[df2['Day']==i]['Score'].values[0] if i in list(df2['Day']) else None for i in ran

以下是我使用的简单熊猫数据框:

>>> df2
    Name  Day  Score
0  Allen    1     25
5  Allen    3      9
我想做的是生成一个Allen分数的列表,并在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与上面的表达式一起使用,但这似乎比它应该有的更笨拙。谢谢你的建议

我首先将索引设置为“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它本身并没有必要,这只是我在这里得到答案的中间步骤。如果你有一个你更喜欢的替代方法,我会真诚地鼓励你发布它。这只是当时我能想到的最好的,自从我最初发布它以来,我还没有看过它(因此我对它的总体记忆相当模糊)