我遇到的问题是,我有一个大型数据框(约 300,000 行),每个主题有多个行,代表不同条件下的给定值。简化版本如下所示:
In [12]: df1
Out[12]:
SubID Condition Value
0 1 1 0.123
1 1 2 0.234
2 2 1 0.345
3 2 2 0.456
4 3 1 0.567
5 3 2 0.678
6 4 1 0.789
我还有第二个表,只有 80 奇数行,其中包含受试者所属的遗传组。
我希望将该数据添加到第一个 DataFrame 中。简化版的编码表如下所示:
In [17]: df2
Out[17]:
Subject Number Genetic Group
0 1 A
1 2 C
2 3 A
3 4 B
我想要的最终结果是:
In [19]: df1
Out[19]:
SubID Condition Value Genetic Group
0 1 1 0.123 A
1 1 2 0.234 A
2 2 1 0.345 C
3 2 2 0.456 C
4 3 1 0.567 A
5 3 2 0.678 A
6 4 1 0.789 B
我可以使用 for: 循环,但想知道是否有一种使用 Pandas DataFrame 合并或连接操作的方法可以避免这种情况?非常感谢,
最佳答案
您可以通过 SubID 进行索引,然后使用 join
来获取您想要的内容:
df1.set_index("SubID", inplace=True)
df2.set_index("Subject Number", inplace=True)
df3 = df1.join(df2, how="left")
或者,您可以使用合并
来完成而不需要索引:
df3 = df1.merge(df2, left_on="SubID", right_on="Subject Number", how="left")
关于python - 向 Pandas DataFrame 添加一个新列,并使用来自单独 DataFrame 的编码数据而不使用循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15226956/