我正在研究一种使用熊猫修改数据框的解决方案。 我有一个像下面这样的数据框,我需要将一行的零值更改为该行的最大值:
a b c
0 0 0 0.10
1 2.1 0 0
2 0 1.9 0
3 0 7.8 6.5
应更改为:
a b c
0 0.10 0.10 0.10
1 2.1 2.1 2.1
2 1.9 1.9 1.9
3 7.8 7.8 7.8
答案 0 :(得分:2)
将DataFrame.mask
与DataFrame.max
一起使用:
df = df.mask(df == 0, df.max(axis=1), axis=0)
print (df)
a b c
0 0.1 0.1 0.1
1 2.1 2.1 2.1
2 1.9 1.9 1.9
3 7.8 7.8 6.5
如果要通过max
设置所有值:
arr = df.values.max(axis=1)
df = pd.DataFrame(np.repeat(arr[:, np.newaxis], len(df.columns), axis=1),
index=df.index, columns=df.columns)
print (df)
a b c
0 0.1 0.1 0.1
1 2.1 2.1 2.1
2 1.9 1.9 1.9
3 7.8 7.8 7.8
答案 1 :(得分:0)
您还可以使用Apply and Replace功能:
df = df.apply(lambda x: x.replace(0, max(x)), axis = 1)
输出:
a b c
0 0.1 0.1 0.1
1 2.1 2.1 2.1
2 1.9 1.9 1.9
3 7.8 7.8 6.5