在链式方法中访问pandas DataFrame属性

时间:2018-04-18 16:12:02

标签: pandas dataframe attributes method-chaining

下午好,

我有一些.csv文件要转换为pandas DataFrames。虽然它们在同一列中包含相同类型的数据,但它们具有不同的列名。我试图在运行中进行所有小的转换,以便能够一次性连接DataFrame。我遇到的问题是,据我所知,无法访问“炸上”的DataFrame属性,首先将其分配给变量然后访问数据。通过以下方式:

df = pd.read_csv("my_csv.csv")
df = df.rename(columns=dict(zip(df.columns, [my_columns])))

所以我想知道是否有人知道如何做以下事情的方法:

(pd.read_csv("my_csv.csv")
    .rename(columns=dict(zip(SELF.columns, [my_columns])))
)

其中SELF引用刚刚创建的DataFrame。

到目前为止,我已尝试使用lambda函数失败,因为我知道它们可用于按刚刚创建的对象(例如[lambda x: x.ColumnA > 20]

)上设置的条件对DataFrame进行子集化

提前谢谢。

修改

我能够在.pipe()的帮助下做我想要的事情。我做了以下事情:

def rename_columns(self, columns):
    return self.rename(columns=dict(zip(self.columns, columns)))

(pd.DataFrame([{'a':1},{'a':1},{'a':1},{'a':1},{'a':1}])
    .pipe(rename_columns, ['b'])
)

1 个答案:

答案 0 :(得分:1)

您可以使用.set_axis

(pd.DataFrame(np.random.randn(5, 5))
 .set_axis(['A', 'B', 'C', 'D', 'E'], axis=1, inplace=False)
 )

inplace将在未来版本的pandas中更改,但目前默认为True; axis=1对列进行操作。