【发布时间】:2021-05-28 09:44:24
【问题描述】:
我有一个包含以下列的数据框 (df):
print(df.columns)
['A','B','C','D','E']
让我们假设所有的列都有数字作为数据。
然后我选择一些列成为索引
Index = ['A','B','C']
df.set_index(Index).sort_index()
我用这种方式进行一些分析。有时,当索引“C”具有某些值时,我需要更改“E”列的行,例如:
df.loc[df[(slice(None,None),slice(None,None),slice(5,10))], 'E' ] = 6
这显然行不通。我尝试了很多不同的方法:使用元组和切片作为索引,如上一行所示,重新排列索引以便我可以使用单个切片(将“C”移动到第一级),尝试使用 .xs (横截面)等,我做不到。 (我一直在研究 .loc、.xs 等的 de 文档)我没有找到完全做到这一点的示例,也没有找到不可能的结论性答案。现在我能够做到以下几点:
df.reset_index(inplace=True) # returning it back into a normal DataFrame
df.loc[(DataFrame['C'] >= 5) & (df['C'] <= 10),'E'] = 6 # Modifying normally based on column data
df.set_index(Index).sort_index() # bring it back to a multiindex
但这似乎不对。在我看来,索引应该能够以某种方式被切片,我只是找不到方法。也许我没有在 Google 上搜索正确的术语。如果有人能帮我一把或指出正确的方向,我将不胜感激。
【问题讨论】: