Python 如何有条件地将熊猫系列附加到另一个数据帧
我有两个数据框,一个是出生的人的名字和他们每年的频率(1880-2017) 另一个是年份和出生总数(1880-2017) 这些数据框的大小不同,但如果出生年份相同,我想将第二个数据框中的列附加到第一个数据框中,以便包含人口百分比。我想这样做: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
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])