我可以将特定功能绑定到Pandas数据框列吗?

时间:2019-01-02 19:47:04

标签: python pandas

一个简单的问题,我可以以某种方式将函数绑定到Pandas中的数据框列吗? 即如果我创建一个数据框,然后将一个csv文件读入其中,我可以这样说吗? column ['x']当数据加载到数据框中时,它将始终对x中的值运行y函数吗?例如,当实例化包含列名和函数作为键值对的对象时,我可以将字典传递给数据框吗?

1 个答案:

答案 0 :(得分:1)

pipe + transform

将函数绑定到pd.DataFrame对象并不是熊猫的工作方式。更好的方法是定义一个函数,该函数接收输入数据帧并执行所需的操作。然后将相同的功能重新用于其他数据框。

由于您具有将功能表的列标签映射到函数的输入字典,因此可以使用transform。然后使用pipe应用于任意数量的输入数据帧。

import pandas as pd, numpy as np

df1 = pd.DataFrame(np.arange(10).reshape((5, 2)))
df2 = pd.DataFrame(np.arange(10, 20).reshape((5, 2)))

def func1(x):
    return x + 100

def func2(x):
    return -x

def enrich_dataframe(mydf):
    d = {0: func1, 1: func2}
    return mydf.transform(d)

df1 = df1.pipe(enrich_dataframe)
df2 = df2.pipe(enrich_dataframe)

print(df1)

#      0  1
# 0  100 -1
# 1  102 -3
# 2  104 -5
# 3  106 -7
# 4  108 -9

print(df2)

#      0   1
# 0  110 -11
# 1  112 -13
# 2  114 -15
# 3  116 -17
# 4  118 -19