【发布时间】:2018-08-19 07:47:29
【问题描述】:
我有一个带有多索引的数据框,并试图找到一种方法将每个 level = 0 中等于最小值或最大值的值替换为 0。例如:
import pandas as pd
import numpy as np
d = {'index0': ['p1', 'p1', 'p1', 'p2', 'p2', 'p2', 'p2', 'p2', 'p3', 'p3', 'p3', 'p3', 'p3'],
'index1': ['u1', 'u2', 'u3', 'u1', 'u2', 'u3', 'u4', 'u5', 'u1', 'u2', 'u3', 'u4', 'u5'],
'data': [2, 16, 49, -67, -57, -30, 14, 76, 52, -26, 38, 79, 65]}
df = pd.DataFrame(data=d)
df = df.set_index(['index0', 'index1'], drop = False)
print(df)
我想要这个数据框:
index0 index1 data
index0 index1
p1 u1 p1 u1 2
u2 p1 u2 16
u3 p1 u3 49
p2 u1 p2 u1 -67
u2 p2 u2 -57
u3 p2 u3 -30
u4 p2 u4 14
u5 p2 u5 76
p3 u1 p3 u1 52
u2 p3 u2 -26
u3 p3 u3 38
u4 p3 u4 79
u5 p3 u5 65
得到这个:
index0 index1 data
index0 index1
p1 u1 p1 u1 0
u2 p1 u2 16
u3 p1 u3 0
p2 u1 p2 u1 0
u2 p2 u2 -57
u3 p2 u3 -30
u4 p2 u4 14
u5 p2 u5 0
p3 u1 p3 u1 52
u2 p3 u2 0
u3 p3 u3 38
u4 p3 u4 0
u5 p3 u5 65
我尝试过使用类似的示例,但无法正常工作。最好的方法是什么?
【问题讨论】:
标签: python python-3.x pandas multi-index