将pandas数据框转换为包含字典或列表列表 [英] converting pandas dataframe to contain a dictionary or list of lists
本文介绍了将pandas数据框转换为包含字典或列表列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
state Year Month count
0 alabama 2017.0 10.0 31
1 alabama 2017.0 11.0 30
2 alabama 2017.0 12.0 31
3 alabama 2018.0 1.0 31
4 alabama 2018.0 2.0 28
5 alabama 2018.0 3.0 31
6 alabama 2018.0 4.0 30
7 alabama 2018.0 5.0 31
8 alabama 2018.0 6.0 30
9 alabama 2018.0 7.0 14
10 arkansas 2017.0 10.0 31
11 arkansas 2017.0 11.0 30
12 arkansas 2017.0 12.0 31
我可以将上面的数据框转换为:
Month
state
alabama {2017:10.0, 2017:11.0, 2017:12.0, 2018:1.0, 2018:2.0, 2018:3.0, 2018:4.0, 2018:5.0, 2018:6.0, 2018:7.0}
arkansas {2017:10.0, 2017:11.0, 2017:12.0}
基于以下@Vaishali的评论,由于字典中不能包含重复的键,因此也可以这样做:
Month
state
alabama [[2017,10.0], [2017,11.0], [2017,12.0], [2018,1.0], [2018,2.0], [2018,3.0], [2018,4.0], [2018,5.0], [2018,6.0], 2[018,7.0]]
arkansas [[2017,10.0], [2017,11.0], [2017,12.0]]
解决方案
尝试
df.groupby('state').apply(lambda x: list(zip(x['Year'], x['Month'])))
state
alabama [(2017.0, 10.0), (2017.0, 11.0), (2017.0, 12.0...
arkansas [(2017.0, 10.0), (2017.0, 11.0), (2017.0, 12.0)]
state Year Month count
0 alabama 2017.0 10.0 31
1 alabama 2017.0 11.0 30
2 alabama 2017.0 12.0 31
3 alabama 2018.0 1.0 31
4 alabama 2018.0 2.0 28
5 alabama 2018.0 3.0 31
6 alabama 2018.0 4.0 30
7 alabama 2018.0 5.0 31
8 alabama 2018.0 6.0 30
9 alabama 2018.0 7.0 14
10 arkansas 2017.0 10.0 31
11 arkansas 2017.0 11.0 30
12 arkansas 2017.0 12.0 31
Can I convert dataframe above to:
Month
state
alabama {2017:10.0, 2017:11.0, 2017:12.0, 2018:1.0, 2018:2.0, 2018:3.0, 2018:4.0, 2018:5.0, 2018:6.0, 2018:7.0}
arkansas {2017:10.0, 2017:11.0, 2017:12.0}
related to converting pandas dataframe to contain a list
based on @Vaishali's comment below, since dictionary cannot contain duplicate keys, this should be ok too:
Month
state
alabama [[2017,10.0], [2017,11.0], [2017,12.0], [2018,1.0], [2018,2.0], [2018,3.0], [2018,4.0], [2018,5.0], [2018,6.0], 2[018,7.0]]
arkansas [[2017,10.0], [2017,11.0], [2017,12.0]]
解决方案
Try
df.groupby('state').apply(lambda x: list(zip(x['Year'], x['Month'])))
state
alabama [(2017.0, 10.0), (2017.0, 11.0), (2017.0, 12.0...
arkansas [(2017.0, 10.0), (2017.0, 11.0), (2017.0, 12.0)]
这篇关于将pandas数据框转换为包含字典或列表列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文