如何合并和重复现有数据框中的填充单元格?

时间:2019-07-16 18:01:06

标签: pandas join merge append concat

我有一个关于美国酒后驾车的数据框。它按州和年份列出所有事件。每年有多个条目。我每个州数据框的单独人口规模每年有一个条目。如何将人口数据框中的人口列添加到醉酒驾驶数据框中,并每年重复多次以重复输入?现在,它只是在酒后驾车数据框下方添加了人口数据框,而没有将它们合并。我会感谢任何人的帮助。坚持了几天。

我已经尝试使用concat,merge,append等多种方式。

df = pd.concat([df, df_pops], sort=False)
df = pd.merge(df, df_pops)

我需要最终的数据框看起来像这样:

STATE      MONTH YEAR FATALS DRUNK_DR POPULATION
Oregon     1     2017   1       1      4,146,600
Oregon     2     2017   0       1      4,146,600
Oregon     3     2017   1       2      4,146,600
...

这就是我要得到的:

         STATE         MONTH    YEAR    FATALS  DRUNK_DR  POPULATION
5619    Oregon          1.0     2017    1.0      0.0        NaN
5620    Oregon          1.0     2017    1.0      0.0        NaN
5621    Oregon          1.0     2017    1.0      0.0        NaN
... ... ... ... ... ... ...
30      Oregon          NaN     2017    NaN      NaN       4,146,600
31      Oregon          NaN     2016    NaN      NaN       4,091,400
32      Oregon          NaN     2015    NaN      NaN       4,016,900

1 个答案:

答案 0 :(得分:0)

合并是正确的;您只是缺少语法。我建议阅读很有帮助的pandas documentation on merge

df1 = pd.DataFrame({'STATE': {0: 'Oregon', 1: 'Oregon', 2: 'Oregon'},
                    'MONTH': {0: 1.0, 1: 1.0, 2: 1.0},
                    'YEAR': {0: 2017, 1: 2017, 2: 2017},
                    'FATALS': {0: 1.0, 1: 1.0, 2: 1.0},
                    'DRUNK_DR': {0: 0.0, 1: 0.0, 2: 0.0}})

df2 = pd.DataFrame({'STATE': {0: 'Oregon', 1: 'Oregon', 2: 'Oregon'},
                    'YEAR': {0: 2017, 1: 2016, 2: 2015},
                    'POPULATION': {0: '4,146,600', 1: '4,091,400', 2: '4,016,900'}})

merged = df1.merge(df2, how='left', left_on=['STATE','YEAR'], right_on=['STATE','YEAR'])

给予

    STATE  MONTH  YEAR  FATALS  DRUNK_DR POPULATION
0  Oregon    1.0  2017     1.0       0.0  4,146,600
1  Oregon    1.0  2017     1.0       0.0  4,146,600
2  Oregon    1.0  2017     1.0       0.0  4,146,600