pythonpandas无列名数据合并_python – Pandas:合并多个数据帧和控制列名?

这篇博客介绍了如何使用functools.reduce和pd.merge在Python的Pandas库中合并多个无列名的数据帧,并通过rename方法控制列名。通过示例展示了如何在合并前为每一列添加特定后缀,以便在合并过程中正确对齐数据。
摘要由CSDN通过智能技术生成

您可以使用

functools.reduce迭代地将pd.merge应用于每个DataFrame:

result = functools.reduce(merge, dfs)

这相当于

result = dfs[0]

for df in dfs[1:]:

result = merge(result, df)

要传递on = [‘org’,’name’]参数,可以使用functools.partial定义合并函数:

merge = functools.partial(pd.merge, on=['org', 'name'])

由于在functools.partial中指定后缀参数只允许

一个固定的后缀选择,因为在这里我们需要一个不同的后缀

pd.merge调用,我认为准备DataFrames列是最容易的

调用pd.merge之前的名字:

for i, df in enumerate(dfs, start=1):

df.rename(columns={col:'{}_df{}'.format(col, i) for col in ('items', 'spend')},

inplace=True)

例如,

import pandas as pd

import numpy as np

import functools

np.random.seed(2015)

N = 50

dfs = [pd.DataFrame(np.random.randint(5, size=(N,4)),

columns=['org', 'name', 'items', 'spend']) for i in range(9)]

for i, df in enumerate(dfs, start=1):

df.rename(columns={col:'{}_df{}'.format(col, i) for col in ('items', 'spend')},

inplace=True)

merge = functools.partial(pd.merge, on=['org', 'name'])

result = functools.reduce(merge, dfs)

print(result.head())

产量

org name items_df1 spend_df1 items_df2 spend_df2 items_df3 \

0 2 4 4 2 3 0 1

1 2 4 4 2 3 0 1

2 2 4 4 2 3 0 1

3 2 4 4 2 3 0 1

4 2 4 4 2 3 0 1

spend_df3 items_df4 spend_df4 items_df5 spend_df5 items_df6 \

0 3 1 0 1 0 4

1 3 1 0 1 0 4

2 3 1 0 1 0 4

3 3 1 0 1 0 4

4 3 1 0 1 0 4

spend_df6 items_df7 spend_df7 items_df8 spend_df8 items_df9 spend_df9

0 3 4 1 3 0 1 2

1 3 4 1 3 0 0 3

2 3 4 1 3 0 0 0

3 3 3 1 3 0 1 2

4 3 3 1 3 0 0 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值