为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2021-10-12 16:24:20
我正在尝试将带有空值的列标题添加到我的数据框(就像这个答案),但在一个已经修改它的函数中,如下所示: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  returnmyfunc(mydf)如果我在 IPython 控制台中单独运行这些行,它将添加它们。但是作为脚本运行,会添加 newcol1 但不会添加 2 和 3。设置copy=False也不起作用。我在这里做错了什么?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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


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)


查看完整回答
反对 回复 2021-10-12
?
温温酱

TA贡献1752条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2021-10-12
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您不需要设置NaN值并再次指定新的列标签。您可以reindex使用任意字符串列表;NaN是未指定数据的默认值。


df = pd.DataFrame({'A': [1, 2, 3]})


df = df.reindex(columns=['A', 'B', 'C'])


print(df)


   A   B   C

0  1 NaN NaN

1  2 NaN NaN

2  3 NaN NaN


查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号