Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 如何将数据帧中的总体单元格与现有数据帧合并并重复?_Pandas_Join_Merge_Append_Concat - Fatal编程技术网

Pandas 如何将数据帧中的总体单元格与现有数据帧合并并重复?

Pandas 如何将数据帧中的总体单元格与现有数据帧合并并重复?,pandas,join,merge,append,concat,Pandas,Join,Merge,Append,Concat,我有一个关于美国酒后驾车的数据框架。它按州和年份列出了所有事件。每年有多个条目。我的每个州的单独人口规模数据框每年有一个条目。如何将人口数据框中的人口列添加到醉酒驾驶数据框中,并每年重复多个条目?现在,它只是在酒后驾驶数据框下添加人口数据框,而没有合并它们。我将感谢任何人的帮助。这件事已经拖了好几天了 我尝试了使用concat、merge、append等多种不同的方法 df = pd.concat([df, df_pops], sort=False) df = pd.merge(df, df_p

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

我尝试了使用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

合并是正确的;你只是缺少语法。我建议你读一本非常有用的书

df1=pd.DataFrame({'STATE':{0:'Oregon',1:'Oregon',2:'Oregon'},
“月”:{0:1.0,1:1.0,2:1.0},
“年份”:{0:2017,1:2017,2:2017},
‘命运论’:{0:1.0,1:1.0,2:1.0},
‘醉酒者’:{0:0.0,1:0.0,2:0.0})
df2=pd.DataFrame({'STATE':{0:'Oregon',1:'Oregon',2:'Oregon'},
“年份”:{0:2017,1:2016,2:2015},
'人口':{0:'4146600',1:'4091400',2:'4016900'})
merged=df1.merge(df2,how='left',left'u on=['STATE','YEAR'],right'u on=['STATE','YEAR'])
给予


感谢Brendan修改了问题的格式。这是我第一次发帖子并且还在学习。谢谢。刚刚尝试了一下,得到了一条错误消息:ValueError:您正在尝试合并object和int64列。如果您希望继续,则应使用pd。concat@pfistermiyagi听起来你的
year
列在一个数据帧中是一个字符串(对象),在另一个数据帧中是一个整数(int64)。您需要转换数据类型以正确合并,例如,使用
df1['YEAR'].astype(int)
(适用于您自己的代码)。这很有效!非常感谢你。虽然我必须先转换为字符串,然后再转换为int.df['YEAR']=df['YEAR'].astype(str).astype(int)
    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