gpt4 book ai didi

python - Pandas 操纵多个数据帧

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

我正在尝试进行一些数据帧操作。我如何获取像

这样的数据框
2018 data

Age City1 City2
0 5 10
1 6 11
2 8 21


2019 data

Age City1 City2
0 15 20
1 63 21
2 83 41

并制作单独的数据框,例如

Age 0 
2018 2019
City1 5 15
City2 10 20

Age 1
2018 2019
City1 6 63
City2 11 21

Age 2
2018 2019
City1 8 83
City2 21 41

制作数据框

df1 = {'Age': [0,1,2], 'City1': [5,6,8], 'City2': [10,11,22]}

df2 = {'Age': [0,1,2], 'City1': [15,63,83], 'City2': [10,11,41]}

最佳答案

使用concat使用参数 keys 获取有关年份的信息,按 DataFrame.stack reshape :

df1 = pd.DataFrame(df1)
df2 = pd.DataFrame(df2)

df = pd.concat([df1.set_index('Age'), df2.set_index('Age')], keys=(2018, 2019), axis=1).stack()
print (df)
2018 2019

0 City1 5 15
City2 10 10
1 City1 6 63
City2 11 11
2 City1 8 83
City2 22 41

如果需要从MultiIndex中选择每个DataFrame:

print (df.loc[0])
print (df.xs(0))
2018 2019
City1 5 15
City2 10 10

print (df.loc[1])
print (df.xs(1))

2018 2019
City1 6 63
City2 11 11

如果需要通过groupby对象创建DataFrame循环的字典:

d = {k: v.reset_index(level=0, drop=True) for k, v in df.groupby(level=0)}
print (d)
{0: 2018 2019
City1 5 15
City2 10 10, 1: 2018 2019
City1 6 63
City2 11 11, 2: 2018 2019
City1 8 83
City2 22 41}

关于python - Pandas 操纵多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56971517/

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