我有几十个非常相似的df,我想应用相同的操作。
例如,我想重命名cols:
df.rename(columns={"oldname": "newname"}, inplace=True)
数据框具有所有相同的列名。我想过这样的自动化:
for one_df in list_of_df:
command = one_df + ".rename(columns={'name': 'newname'}, inplace=True)"
exec(command)
是否有更体面的熊猫解决方案?
答案 0 :(得分:1)
根据OP的评论:让我们确保list_of_df
是数据框列表,不是数据框名称的字符串列表。
此
df1 = pd.DataFrame(1, columns=list('ABC'))
df2 = pd.DataFrame(2, columns=list('ABC'))
list_of_df = [df1, df2]
不是
df1 = pd.DataFrame(1, columns=list('ABC'))
df2 = pd.DataFrame(2, columns=list('ABC'))
list_of_df = ['df1', 'df2']
如果它们都有相同的列,我倾向于将它们保存在一个数据框中。
df = pd.concat(dict(enumerate(list_of_df))).rename(columns={'name': 'newname'})
然后,您可以使用loc
或xs
df.loc[0]
或
df.xs(0)
将返回list_of_df[0]