Python重命名Pandas DataFrame列

时间:2019-02-27 18:56:38

标签: python pandas dataframe rename

import pandas as pd
import numpy as np
datain = np.loadtxt(datafile)
df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])
avg = df.groupby(["t"], sort=False)["p"].mean().rename(columns={1:"mean"})

这不起作用,它告诉我TypeError:rename()得到了意外的关键字参数“ columns”。如果我这样做也行不通,

avg.rename(columns = {1:"mean"}, inplace=True)

我不知道为什么,所有文档都告诉我列调用是正确的。我只想重命名我的“均值”调用创建的空白列以具有字符串索引。有人知道为什么或如何解决此问题吗?我见过的所有示例都遵循这种格式。谢谢。

3 个答案:

答案 0 :(得分:2)

IIUC,您可以这样做

import pandas as pd
df = pd.DataFrame({"a":np.arange(10),
                   "b":np.random.choice(["A","B"],10)})

avg = df.groupby("b", sort=False)["a"].mean()\
        .reset_index(name="mean")

avg = df.groupby("b", sort=False)["a"].mean().reset_index()\
        .rename(columns={"a":"mean"})

avg = df.groupby("b", sort=False, as_index=False)["a"].mean()\
        .reset_index()\
        .rename(columns={"a":"mean"})

答案 1 :(得分:0)

我认为这应该有效

avg = df.groupby([“ t”],sort = False)[“ p”]。mean()。rename('mean')。reset_index()

答案 2 :(得分:0)

我遇到了同样的问题,并对这个问题感到困惑。致电时:

df.groupby(...)["p"]....rename(columns={1:"mean"})

rename()上调用DataFrame["p"],它返回一个Series对象,而不是DataFrame对象。 Series对象的rename()函数没有列参数(因为只有1个“列”)。有时,熊猫会隐式将Series对象转换为DataFrames,因此很容易错过。您也可以写

pd.Series.to_frame(df.groupby(...)["p"].mean().reset_index(), name='mean')