Python 如何有条件地将熊猫系列附加到另一个数据帧

Python 如何有条件地将熊猫系列附加到另一个数据帧,python,pandas,dataframe,join,append,Python,Pandas,Dataframe,Join,Append,我有两个数据框,一个是出生的人的名字和他们每年的频率(1880-2017) 另一个是年份和出生总数(1880-2017) 这些数据框的大小不同,但如果出生年份相同,我想将第二个数据框中的列附加到第一个数据框中,以便包含人口百分比。我想这样做: for i in range(len(all_names_nat_DF)): for j in range(len(total_births)): if all_names_nat_DF['year'][i] == total_bi

我有两个数据框,一个是出生的人的名字和他们每年的频率(1880-2017)

另一个是年份和出生总数(1880-2017)

这些数据框的大小不同,但如果出生年份相同,我想将第二个数据框中的列附加到第一个数据框中,以便包含人口百分比。我想这样做:

for i in range(len(all_names_nat_DF)):
    for j in range(len(total_births)):
        if all_names_nat_DF['year'][i] == total_births['birth_year']:
            all_names_nat_DF.append(total_births['birth_year'][j])

但是这样我得到了一个错误
ValueError:只能比较相同标签的系列对象

您希望使用
df.merge

df
姓名性别频率年
0玛丽F 7065 1880
1安娜F 2604 1880
2艾玛F 2003 1880
3 Eliz F 1939 1880
4米妮F 1746 1880
出生
出生年月男女合计
0   1880    118400  97605   216005
1   1881    108282  98855   207137
2   1882    122031  115695  237726
3   1883    112477  120059  232536
4   1884    122738  137586  260324
df.merge(出生、出生方式、内部、年左、年右)
姓名性别频率年份出生年月男女合计
0玛丽F 7065 1880 1880 118400 97605 216005
1安娜F 2604 1880 1880 118400 97605 216005
2艾玛F 2003 1880 1880 118400 97605 216005
3 Eliz F 1939 1880 1880 118400 97605 216005
4米妮F 1746 1880 1880 118400 97605 216005

尝试合并。您正在寻找的是
加入的概念,它与
关键列上的数据帧相匹配,您的情况是
出生年份
。在熊猫中,我们使用
merge
。我链接了一个很好的问答来解释这个概念。伊珊·萨拉斯瓦特,看起来很有效,谢谢!我可以问一下你是怎么知道在出生时加入左派和右派的?出于某种原因,这对我来说并不直观。@NathanCahn
上的
left\u和
上的
right\u参数只是表示要连接的列或索引级别名称。如果左侧和右侧的数据帧都有一个名为“year”的列,那么您只需使用
on
参数(
on='year'
)。本例中的“左”数据帧是您正在调用merge的数据帧,因此在
df行中,merge(birtions…)
df是左数据帧,birtions是右数据帧。参考:那就清楚了谢谢你的帮助!
 birth_year    Male    Female   Total
     1880     118400    97605  216005
     1881     108282    98855  207137
     1882     122031   115695  237726
     1883     112477   120059  232536
     1884     122738   137586  260324
...
for i in range(len(all_names_nat_DF)):
    for j in range(len(total_births)):
        if all_names_nat_DF['year'][i] == total_births['birth_year']:
            all_names_nat_DF.append(total_births['birth_year'][j])