转换pandas dataframe以包含字典或列表列表

use*_*827 1 python 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
Run Code Online (Sandbox Code Playgroud)

我可以将上面的数据帧转换为:

                                                            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}
Run Code Online (Sandbox Code Playgroud)

转换pandas dataframe以包含列表有关

根据@ 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]]
Run Code Online (Sandbox Code Playgroud)

Vai*_*ali 5

尝试

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)]
Run Code Online (Sandbox Code Playgroud)