大熊猫:将零行值设置为该数据框该行的最大值

时间:2018-08-17 06:56:25

标签: python-3.x pandas dataframe

我正在研究一种使用熊猫修改数据框的解决方案。 我有一个像下面这样的数据框,我需要将一行的零值更改为该行的最大值:

    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   

2 个答案:

答案 0 :(得分:2)

DataFrame.maskDataFrame.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