首页 > 解决方案 > Pandas 合并结果输出下一行

问题描述

假设我有两个数据框

df_1

city           state           salary
New York        NY             85000
Chicago         IL             65000
Miami           FL             75000
Dallas          TX             78000
Seattle         WA             96000

df_2

city           state           taxes
New York        NY             15000
Chicago         IL             5000
Miami           FL             6500

接下来,我加入两个数据框

joined_df = df_1.merge(df_2, how='inner', left_on=['city'], right_on = ['city'])

结果:

joined_df

city           state           salary           city           state        taxes
New York        NY             85000           New York          NY         15000
Chicago         IL             65000           Chicago           IL         5000
Miami           FL             75000           Miami             FL         6500

无论如何我可以将两个数据框堆叠在一起加入城市而不是水平延伸线,如下所示:

要求:

joined_df

city             state         salary          taxes
New York          NY            85000
New York          NY                           15000
Chicago           IL            65000
Chicago           IL                           5000
Miami             FL            75000
Miami             FL                           6500

我怎么能在熊猫中做到这一点!

标签: pythonpandas

解决方案


在这种情况下,如果我们需要同时考虑和 ,我们可能需要先使用merge来限制相关行。concatcitystate

rel_df_1 = df_1.merge(df_2)[df_1.columns]
rel_df_2 = df_2.merge(df_1)[df_2.columns]
df = pd.concat([rel_df_1, rel_df_2]).sort_values(['city', 'state'])

推荐阅读