在链式方法中访问 pandas DataFrame 属性
Access pandas DataFrame attributes inside chained methods
下午好,
我有几个 .csv 文件要转换成 pandas DataFrame。尽管它们在相同的列中包含相同类型的数据,但它们具有不同的列名。我正在尝试即时进行所有小的转换,以便能够一次连接所有数据帧。我遇到的问题是,据我所知,没有办法访问 DataFrame "on the fry" 的属性,首先你将它分配给一个变量,然后访问数据。通过以下方式:
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
函数但没有成功,因为我知道它们可以用于根据在刚创建的对象上设置的条件对 DataFrame 进行子集化,例如 [lambda x: x.ColumnA > 20]
提前致谢。
编辑:
在 .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'])
)
您可以为此使用 .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
对列进行操作。
下午好,
我有几个 .csv 文件要转换成 pandas DataFrame。尽管它们在相同的列中包含相同类型的数据,但它们具有不同的列名。我正在尝试即时进行所有小的转换,以便能够一次连接所有数据帧。我遇到的问题是,据我所知,没有办法访问 DataFrame "on the fry" 的属性,首先你将它分配给一个变量,然后访问数据。通过以下方式:
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
函数但没有成功,因为我知道它们可以用于根据在刚创建的对象上设置的条件对 DataFrame 进行子集化,例如 [lambda x: x.ColumnA > 20]
提前致谢。
编辑:
在 .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'])
)
您可以为此使用 .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
对列进行操作。