这是我正在使用的简单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]
肯定有一种不那么笨重的方法吗? 它是什么?
在相关的说明中,我想为更大的数据框中的每个人这样做。最好的方法是什么?现在,我能想到的只是将应用与上面的表达式一起使用,但是再次看起来比这更加笨拙。谢谢你的任何建议!
答案 0 :(得分:2)
我首先将索引设置为'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()
以了解指定缺失值的不同选项。