我有一个包含许多列的数据框。我想用最后一个x列数的0来填充nan。我使用了以下代码,但似乎无法正常工作。
df.iloc[:, -10:-1].fillna(value=0, inplace=True)
我在做什么错?当我专门用名称指一列时:
df['column_a'].fillna(value=0, inplace=True)
它可以工作,但我宁愿一次不做一列。
答案 0 :(得分:1)
这里应该起作用的食谱是
df.iloc[:, -x:] = df.iloc[:, -x:].fillna(value=0)
这里有一个可复制的例子是
import pandas as pd
df = pd.DataFrame({'col1':range(10),
'col2':range(1, 11),
'col3':range(2, 12),
'col4':range(3, 13),
'col5':range(4, 14)})
# pepper with NaNs
df.iloc[8, 2] = None
df.iloc[8, 3] = None
df.iloc[8, 4] = None
# apply fillna change to last 2 cols
x = 2
df.iloc[:, -x:] = df.iloc[:, -x:].fillna(value=0)
print(df)