gpt4 book ai didi

python - 映射多个数据框的值并填充列

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:50 25 4
gpt4 key购买 nike

假设我有以下三个数据框:

数据框 1:

df1 = {'year': ['2010','2012','2014','2015'], 'count': [1,1,1,1]}
df1 = pd.DataFrame(data=df1)
df1 = df1.set_index('year')
df1

year count
2010 1
2012 1
2014 1
2015 1

数据框 2:

df2 = {'year': ['2010','2011','2016','2017'], 'count': [2,1,3,1]}
df2 = pd.DataFrame(data=df2)
df2 = df2.set_index('year')
df2

year count
2010 2
2011 1
2016 3
2017 1

数据框 3:

df3 = {'year': ['2010','2011','2012','2013','2014','2015','2017'], 'count': [4,2,5,4,4,1,1]}
df3 = pd.DataFrame(data=df3)
df3 = df3.set_index('year')
df3

year count
2010 4
2011 2
2012 5
2013 4
2014 4
2015 1
2017 1

现在我想要三个包含所有年份和计数的数据框。例如,如果 df1 缺少年份 2011、2013、2016、2017,那么这些年份将添加到 df1 的索引中,每个新添加的索引的计数都为 0。

所以对于 df1,我的输出应该是这样的:

year    count
2010 1
2012 1
2014 1
2015 1
2011 0
2013 0
2016 0
2017 0

对于 df2 和 df3 也是如此。谢谢。

最佳答案

您可以使用 unionreindex :

idx = df1.index.union(df2.index).union(df3.index)
print (idx)
Index(['2010', '2011', '2012', '2013',
'2014', '2015', '2016', '2017'], dtype='object', name='year')

另一种解决方案:

from functools import reduce
idx = reduce(np.union1d,[df1.index, df2.index, df3.index])
print (idx)

['2010' '2011' '2012' '2013' '2014' '2015' '2016' '2017']

df1 = df1.reindex(idx, fill_value=0)
print (df1)
count
year
2010 1
2011 0
2012 1
2013 0
2014 1
2015 1
2016 0
2017 0
df2 = df2.reindex(idx, fill_value=0)
print (df2)
count
year
2010 2
2011 1
2012 0
2013 0
2014 0
2015 0
2016 3
2017 1
df3 = df3.reindex(idx, fill_value=0)
print (df3)
count
year
2010 4
2011 2
2012 5
2013 4
2014 4
2015 1
2016 0
2017 1

关于python - 映射多个数据框的值并填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48297940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com