所以我从CSV文件中的数据框大熊猫看起来像这样:Python Pandas Dataframe:如何从数据框中的现有列表创建列?
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), ... ]
国家数对的每一行的第4列中的数字是不相同的。
我想扩大在第4列的列表中,并转化数据框弄成这个样子:
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
...
我的想法是,产生2个独立的列,然后将它们加入到原始数据帧。也许事情是这样的:
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)
上面的代码是绝对不工作(我只希望它可以帮助表达我的想法),我不知道如何扩大日期列也是如此。
任何帮助或建议非常感谢。
非常感谢您!我会尝试这种方式,看看它是否有效。 –
你是对的 - 第四列不是一个实际的列表,而是一个字符串,你的方法确实可以解决日期问题。谢谢! –