【发布时间】:2019-08-12 12:53:29
【问题描述】:
我有两个数据框,一个是出生的人的名字和他们在每一年(1880-2017)的频率。
name gender frequency year
Mary F 7065 1880
Anna F 2604 1880
Emma F 2003 1880
Elizabeth F 1939 1880
Minnie F 1746 1880
...
另一个是年份和出生总数(1880-2017)。
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])
但是这样我得到了错误ValueError: Can only compare identically-labeled Series objects
【问题讨论】:
-
尝试合并。
-
您正在寻找的是
joining的概念,它与key column上的数据帧匹配,在您的情况下为birth_year。在 pandas 中,我们为此使用merge。我链接了一个很好的问答来解释这个概念。
标签: python pandas dataframe join append