3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
df.reindex()除非索引相等,否則Pandas會生成一個新對象,因此您需要從函數(shù)中返回新對象。
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)

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個贊
不確定這是您在實(shí)際代碼中犯的錯誤還是在此處輸入時犯的錯誤,但這tolist()
是一個函數(shù),您必須添加括號。
df = df.reindex(columns=df.columns.tolist() + list_of_newcols)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個贊
您不需要設(shè)置NaN值并再次指定新的列標(biāo)簽。您可以reindex使用任意字符串列表;NaN是未指定數(shù)據(jù)的默認(rèn)值。
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
添加回答
舉報