Python 在多索引中使用条件函数编辑数据
我对pandas还相当陌生,我正在努力使用多种条件编辑数据透视表中的值 我有下面的透视表,我正试图编辑桌面和移动设备的数据,但成本较低。这两者是互斥的,因此,如果一个帐户对桌面有成本,它将免费获得移动(移动成本应为零),如果桌面下的成本为0,则移动成本应为25 透视表的代码如下所示Python 在多索引中使用条件函数编辑数据,python,pandas,pivot-table,multi-index,Python,Pandas,Pivot Table,Multi Index,我对pandas还相当陌生,我正在努力使用多种条件编辑数据透视表中的值 我有下面的透视表,我正试图编辑桌面和移动设备的数据,但成本较低。这两者是互斥的,因此,如果一个帐户对桌面有成本,它将免费获得移动(移动成本应为零),如果桌面下的成本为0,则移动成本应为25 透视表的代码如下所示 cost_merge = pd.pivot_table(cost_merge, values=['Cost'], index=['ID', 'First Name', 'Last Name', 'Account
cost_merge = pd.pivot_table(cost_merge, values=['Cost'],
index=['ID', 'First Name', 'Last Name', 'Account Number', 'Creation Date', 'Country/Region'],
columns=['Service Name'], fill_value=0)
当试图使用df.loc来形成条件时,我得到了KeyError
当我运行cost\u merge.columns.levels
时,我会得到FrozenList([['cost'],['1','Desktop','Mobile','4','5']])
但是我无法将其用于我想要的逻辑
我希望最终结果是这样的
我觉得我已经通过了每一个熊猫线程,所以试图得到答案,所以道歉,如果有人问过
正如我之前所说,我对pandas比较陌生,因此如果某些东西没有以最佳方式形成,请告诉我,以便我可以修复。使用
.loc
和多索引可能会比较棘手,但与for
循环结合使用,在这种情况下仍然有效:
for i in cost_merge.index:
if cost_merge.loc[i, ('Cost', 'Desktop')] == 25:
cost_merge.loc[i, ('Cost', 'Mobile')] = 0
这将遍历索引并检查桌面成本的值是否等于25,如果是,则将移动成本设置为0 你这个圣人!谢谢@K753