创建一个函数来提取特定列并重命名pandas

2024-05-05 16:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个目标表结构(3列)。我有多个源,每个源都有自己的细微差别,但最终我希望使用每个表填充目标表(追加条目)

我想使用一个函数(我知道我可以不使用函数来完成它,但它将帮助我从长远来看能够使用函数)

我有下面的源表

id col1 col2 col3 col4 
1   a    b    c    g
1   a    b    d    h
1   c    d    e    i

我想要这个最后的结构

^{pr2}$

所以我所做的就是从源表返回id、col1和col2(但是注意列名的变化)。对于不同的源表,它将是一组不同的3列,我将提取,因此使用函数。

我使用的函数当前只返回1列(而不是3)

定义功能:

^{pr3}$

将函数应用于源表。

^{pr4}$

Tags: 函数功能id目标定义条目结构col2
2条回答

您还可以执行以下操作:

def func(df, *l):
    d = pd.DataFrame(df, columns=l)
    d.rename(columns={'col1':'num', 'col2':'group'}, inplace=True)
    return d

df2 = func(df, 'id','col1','col2')

print(df2)

   id num group
0   1   a     b
1   1   a     b
2   1   c     d

以下是编写此函数的灵活方法:

def func(dframe, **kwargs):
    return dframe.filter(items=kwargs.keys()).rename(columns=kwargs)

func(df, id="id", col1="num", col2="group")

#   group  id num
# 0     b   1   a
# 1     b   1   a
# 2     d   1   c

要确保新数据帧保留原始数据帧的列顺序,可以先对参数键进行排序:

^{pr2}$

相关问题 更多 >