如何在函数内重新编制熊猫数据框的索引?

时间:2019-01-16 15:38:48

标签: python pandas dataframe reindex

我试图将具有空值的列标题添加到我的数据帧(just like this answer)中,但是在已经对其进行了修改的函数中,如下所示:

corrplot

如果我在IPython控制台中单独运行这些行,它将添加它们。但是以脚本运行时,将添加newcol1,但不会添加2和3。设置mydf = pd.DataFrame() def myfunc(df): df['newcol1'] = np.nan # this works list_of_newcols = ['newcol2', 'newcol3'] df = df.reindex(columns=df.columns.tolist() + list_of_newcols) # this does not return myfunc(mydf) 也不起作用。我在这里做什么错了?

3 个答案:

答案 0 :(得分:2)

除非索引相等,熊猫df.reindex()会产生一个新对象,因此您需要从函数中返回新对象。

def myfunc(df):
  df['newcol1'] = np.nan  # this works

  list_of_newcols = ['newcol2', 'newcol3']
  df = df.reindex(columns=df.columns.tolist + list_of_newcols)  # this does not
  return df

mydf = myfunc(mydf)

答案 1 :(得分:0)

不确定这是您在实际代码中还是在此处键入错误时所犯的错误,但是tolist()是一个函数,您必须添加方括号。

df = df.reindex(columns=df.columns.tolist() + list_of_newcols)

答案 2 :(得分:0)

您无需设置for ii = 1:numel(start_bins) res{ii} = mean(data(start_bins(ii):end_bins(ii),:),1); end 值并再次指定 新列标签。您可以reindex使用任意字符串列表; NaN是未指定数据的默认值。

NaN