2 回答
TA贡献1886条经验 获得超2个赞
使用您的excel文件:
df = pd.read_excel('Downloads/Sample.xlsx', header=[0,1], index_col=0)
df
输出:
Lists Group 1 ... Group 2
Name AR AZ CA CO CT FL GA IL IN KY ... SC SD TN TX UT VA WA WI WV WY
Name 1 NaN 1.0 1.0 1.0 NaN 1.0 NaN NaN 1 1 ... 1 NaN 1.0 1.0 1.0 1.0 1 1.0 NaN 1.0
Name 2 NaN NaN NaN NaN NaN 1.0 NaN 1.0 1 1 ... 1 NaN 1.0 NaN NaN 1.0 1 NaN NaN NaN
Name 3 NaN NaN NaN NaN NaN NaN NaN 1.0 1 1 ... 1 NaN NaN NaN NaN NaN 1 NaN NaN NaN
[3 rows x 72 columns]
待办事项 #1
df.index = df.index.str.upper()
df
输出:
Lists Group 1 ... Group 2
Name AR AZ CA CO CT FL GA IL IN KY ... SC SD TN TX UT VA WA WI WV WY
NAME 1 NaN 1.0 1.0 1.0 NaN 1.0 NaN NaN 1 1 ... 1 NaN 1.0 1.0 1.0 1.0 1 1.0 NaN 1.0
NAME 2 NaN NaN NaN NaN NaN 1.0 NaN 1.0 1 1 ... 1 NaN 1.0 NaN NaN 1.0 1 NaN NaN NaN
NAME 3 NaN NaN NaN NaN NaN NaN NaN 1.0 1 1 ... 1 NaN NaN NaN NaN NaN 1 NaN NaN NaN
[3 rows x 72 columns]
待办事项 #2
df[df.loc[:, ('Group 1', 'AZ')] == 1].index.to_list()
输出:
['NAME 1']
待办事项 #3
df[df.loc[:, ('Group 1', 'IL')] == 1].index.to_list()
输出:
['NAME 2', 'NAME 3']
TA贡献1887条经验 获得超5个赞
由于您没有提供输入样本,因此我只能假设您要达到的目标。
如果您尝试使用 MultIndex 选择和修改特定行,您可以使用 .loc 运算符和您在 MultiIndex 中指定的相应元组,例如
df.loc['Name1', ('GROUP 1', 'A')]
让我们模拟一些数据...
index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],
names=['year', 'visit'])
columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']],
names=['subject', 'type'])
data=np.array(list(string.ascii_lowercase))[:24].reshape((4, 6))
df = pd.DataFrame(
columns=columns,
index=index,
data=data
)
这是我们的 MultiIndex 数据帧:
subject Bob Guido Sue
type HR Temp HR Temp HR Temp
year visit
2013 1 a b c d e f
2 g h i j k l
2014 1 m n o p q r
2 s t u v w x
让我们选择第一行并将字母更改为大写...
df.loc[(2013, 1)].str.upper()
...同样对于第一列...
df.loc[('Bob', 'HR')].str.upper()
...最后我们选择一个特定的单元格
df.loc[(2014, 1), ('Guido', 'HR')].upper()
返回
'O'
我希望这能让您了解如何使用 .loc 运算符....
添加回答
举报