gpt4 book ai didi

python - 如何连接/加入这三个数据框

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:03 26 4
gpt4 key购买 nike

我有三个数据框 df_Male , df_female , Df_TransGender

示例数据框

df_Male

continent avg_count_country avg_age
Asia 55 5
Africa 65 10
Europe 75 8

df_Female

continent avg_count_country avg_age
Asia 50 7
Africa 60 12
Europe 70 0

df_Transgender

continent avg_count_country avg_age
Asia 30 6
Africa 40 11
America 80 10

现在我像下面这样连接

frames = [df_Male, df_Female, df_Transgender]
df = pd.concat(frames, keys=['Male', 'Female', 'Transgender'])

如您所见,America 出现在 df_transgender 中,欧洲同样出现在 df_Maledf_Female

所以我必须以某种方式连接它,使其看起来像下面但不是手动的,因为可能有大量的行

              continent  avg_count_country  avg_age
Male 0 Asia 55 5
1 Africa 65 10
2 Europe 75 8
3 America 0 0
Female 0 Asia 50 7
1 Africa 60 12
2 Europe 70 0
3 America 0 0
Transgender 0 Asia 30 6
1 Africa 40 11
2 America 80 10
3 Europe 0 0

所以对于其他 continentavg_count_countryavg_age 应该是 0

最佳答案

您可以在连接之前添加“性别”列。

我们使用 Categorical Datagroupby 计算笛卡尔积。这也应该会产生性能优势。

df = pd.concat([df_Male.assign(gender='Male'),
df_Female.assign(gender='Female'),
df_Transgender.assign(gender='Transgender')])

for col in ['gender', 'continent']:
df[col] = df[col].astype('category')

res = df.groupby(['gender', 'continent']).first().fillna(0).astype(int)

print(res)

avg_count_country avg_age
gender continent
Female Africa 60 12
America 0 0
Asia 50 7
Europe 70 0
Male Africa 65 10
America 0 0
Asia 55 5
Europe 75 8
Transgender Africa 40 11
America 80 10
Asia 30 6
Europe 0 0

关于python - 如何连接/加入这三个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51327745/

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