所以,我有一个从CSV文件读取的Pandas数据帧,看起来像这样:
year,month,day,list
2017,09,01,"[('United States of America', 12345), (u'Germany', 54321), (u'Switzerland', 13524), (u'Netherlands', 24135), ... ]
2017,09,02,"[('United States of America', 6789), (u'Germany', 9876), (u'Switzerland', 6879), (u'Netherlands', 7968), ... ]
第四列中每一行的国家数量不相同。
我希望将第四列中的列表展开,并将数据框转换为以下形式:
year,month,day,country,count
2017,09,01,'United States of America',12345
2017,09,01,'Germany',54321
2017,09,01,'Switzerland',13524
2017,09,01,'Netherlands',24135
...
2017,09,02,'United States of America',6789
2017,09,02,'Germany',9876
2017,09,02,'Switzerland',6879
2017,09,02,'Netherlands',7968
...
我的想法是生成两个独立的列,然后将它们与原始数据框连接起来。可能像这样:
country = df.apply(lambda x:[x['list'][0]]).stack().reset_index(level=1, drop=True)
count = df.apply(lambda x:[x['list'][1]]).stack().reset_index(level=1, drop=True)
df.drop('list', axis=1).join(country).join(count)
上面的代码肯定不起作用(我只希望它能帮助表达我的想法),而且我也不知道如何扩展日期列。
非常感谢任何帮助或建议。