我有一个包含如下条目的当前df:
date tags ease
0 'date1' 'tag1' 1
1 'date1' 'tag1' 2
2 'date1' 'tag1' 1
3 'date1' 'tag2' 2
4 'date1' 'tag2' 2
5 'date2' 'tag1' 3
6 'date2' 'tag1' 1
7 'date2' 'tag2' 1
8 'date2' 'tag3' 1
我想创建一个df(或者其他类型的数组,如果有更好的方法的话——我对Python很熟悉,欢迎您的建议)来计算特定标记在df中每个日期具有特定ease的时间。例如,如果我想计算每个标记的易用性为1的次数,它将如下所示:
date1 date2
tag1 2 1
tag2 1 2
tag3 0 1
我可以想办法用循环来实现这一点,但是我的最终输出大约是700 x 800,我需要为每个“ease”做一个。我觉得必须有一个有效的方法来使用索引来实现这一点,因此我首先考虑熊猫。如前所述,我对Python非常陌生,如果有其他的方法或包我应该考虑使用,我是开放的。你知道吗
这里有一个选项;使用
groupby.agg
计算count
,然后unstack
将结果格式化为宽格式:或者如果您喜欢使用
crosstab
:我想你需要^{} 和^{} :
另一种解决方案是} 与^{} 一起使用,并对^{} 进行整形:
crosstab
将^{编辑:
在测试完我发布的解决方案后,需要添加函数^{} 和^{} ,因为如果过滤掉非
1
值,它会删除最终DataFrame
中的行。你知道吗还有第二个解决方案:
时间安排:
(Psidom的第二个解决方案通常是错误的,所以我从计时中省略了它)
您可以考虑在DataFrame上使用pivot\u table方法,并使用自己的函数来做一些只有在您想要的条件为真时才有意义的事情。然后,如果没有0的数据,也应该填充标记和日期。比如:
相关问题 更多 >
编程相关推荐