首页 > 解决方案 > 多索引列上的熊猫,fillna

问题描述

index_tuples=[]

for distance in ["near", "far"]:
    for vehicle in ["bike", "car"]:
        index_tuples.append([distance, vehicle])

index = pd.MultiIndex.from_tuples(index_tuples, names=["distance", "vehicle"])
df = pd.DataFrame(index=["city"], columns = index)



d = {(x,y):my_home_city[x][y] for x in my_home_city for y in my_home_city[x]}
df.loc['my_home_city',:]=d
df
Out[994]: 
distance     near       far     
vehicle      bike  car bike  car
city          NaN  NaN  NaN  NaN
my_home_city    1    0    0    1

我想做df['near']['bike'].fillna(False, inplace=True)

它说

试图在 DataFrame 中的切片副本上设置一个值

请参阅文档中的注意事项:http: //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

标签: pandasdataframe

解决方案


我认为inplace这不是一个好习惯,请检查thisthis,因此按以下方式分配选定的列tuple

df[('near', 'bike')] = df[('near', 'bike')].fillna(False)
print (df)
distance       near       far     
vehicle        bike  car bike  car
city          False  NaN  NaN  NaN
my_home_city      1  0.0  0.0  1.0

但是你的解决方案应该改变:

df[('near', 'bike')].fillna(False, inplace=True)

推荐阅读