python - Pandas:使用一个公共(public)列合并多个 DataFrame

标签 python python-3.x pandas merge join

我正在处理多个数据帧,每个数据帧都有一个共同的列,即 post_id。每个 df 的示例如下:

  post_id   post_likes  
  0          1
  1          2
  2          3
  3          4
  4          5
  5          6

因此,每个 df 都有一列,其中包含 post_id,但在每个后续 df 中还有另一列,例如喜欢、总数、名称等。有什么方法可以根据 post_id 将所有这些 dfs 分组为一个,因为我的最终目标是将这个数据框写入 csv。

最佳答案

假设我有一长串数据帧,所有数据帧都有一个标记为 post_id 的列和另一列。

lodf = [df1, df2, df3, df4, df5]

您可以使用pd.concat将它们全部放在一起。您只需先设置索引

df = pd.concat([d.set_index('post_id') for d in lodf], axis=1).reset_index()

演示

df1 = pd.DataFrame(dict(post_id=[1, 2, 3], col1=[1, 2, 3]))
df2 = pd.DataFrame(dict(post_id=[1, 2, 3], col2=[1, 2, 3]))
df3 = pd.DataFrame(dict(post_id=[1, 2, 3], col3=[1, 2, 3]))
df4 = pd.DataFrame(dict(post_id=[1, 2, 3], col4=[1, 2, 3]))
df5 = pd.DataFrame(dict(post_id=[1, 2, 3], col5=[1, 2, 3]))

lodf = [df1, df2, df3, df4, df5]

df = pd.concat([d.set_index('post_id') for d in lodf], axis=1).reset_index()
df

   post_id  col1  col2  col3  col4  col5
0        1     1     1     1     1     1
1        2     2     2     2     2     2
2        3     3     3     3     3     3

​

关于python - Pandas:使用一个公共(public)列合并多个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43403608/

相关文章:

python - PyQT 表模型数据绑定(bind)

python - 在 Ubuntu 中安装 Theano 的问题

python-3.x - 减去日期时间对象以获得以毫秒为单位的数值结果(Python)

python - 将相关热图导出到 Excel

python - 如何在新图像上使用 .predict_generator() - Keras

python - 使用 Pandas 进行基本矩阵计算

python - Twilio/Django 未收到回复短信

python - 我应该使用字典进行成员资格测试吗?

python - 在二进制数的位之间迭代

python - 从 pandas 数据框列值中删除句子的第一个单词