第一行中的熊猫被条件替换

问题描述 投票:0回答:1

我有一张桌子:

物体 第 1 栏 第 2 栏 第3栏 第 4 栏
参考 10 0 7 0
对象1 14 9 1 30
对象2 1 16 0 0
对象3 9 21 3 17
对象4 11 0 4 22

我想按条件转换它:如果任何列的第一行=0,那么该列的其他行可以是0或1。如果当前值> 0,则变为1,如果是0,仍为 0。

结果表是:

物体 第 1 栏 第 2 栏 第3栏 第 4 栏
参考 10 0 7 0
对象1 14 1 1 1
对象2 1 1 0 0
对象3 9 1 3 1
对象4 11 0 4 1

我尝试过这个变体:

for column in df:
    df[column] = np.where((df[column][0] == 0) & (df[column] != 0), 1, 0)

但它会将所有列重置为零,其中第一行不等于 0。 我怎样才能正确地做到这一点?

python pandas numpy replace series
1个回答
0
投票

您可以通过

df.iloc[0]
选择第一行,然后检查该行中哪些列相等
0
。然后更改特定列:

first_row = df.iloc[0]
zero_columns = first_row[first_row == 0].index

df.loc[:, zero_columns] = (df.loc[:, zero_columns] > 0).astype(int)
print(df)

打印:

      Object  Col1  Col2  Col3  Col4
0  reference    10     0     7     0
1       Obj1    14     1     1     1
2       Obj2     1     1     0     0
3       Obj3     9     1     3     1
4       Obj4    11     0     4     1
© www.soinside.com 2019 - 2024. All rights reserved.