首页 > 解决方案 > 根据python中列的条件更新行值

问题描述

我有一个像这样的python数据框

ID     ID_1    ID_2    ID_3   ID_4   ID_5

ID_1   1.0     20.1    31.0   23.1   31.5

ID_2   3.0     1.0     23.0   90.0   21.5

ID_3.  7.0     70.1    1.0    23.0   31.5

ID_4.  9.0     90.1    43.0   1.0    61.5

ID_5   11.0    10.1    11.0   23.0    1.0

我需要更新 COLUMN NAMES 等于 ID 值的值,然后将值设置为零。

例如,在第一行中,ID 值 (ID_1) 与第一列 ID_1 匹配,我需要将 1.0 的值重置为零,同样对于第二行,ID 值 (ID_2) 与第二列 ID_2 匹配并重置值1.0 到零。

我如何在 Python 中做到这一点?我对python很陌生。任何人都可以请帮忙。

预期的输出是这样的 -

ID     ID_1    ID_2    ID_3   ID_4   ID_5

ID_1   0.0     20.1    31.0   23.1   31.5

ID_2   3.0     0.0     23.0   90.0   21.5

ID_3.  7.0     70.1    0.0    23.0   31.5

ID_4.  9.0     90.1    43.0   0.0    61.5

ID_5   11.0    10.1    11.0   23.0    0.0

标签: pythonpandasdataframe

解决方案


让我们尝试广播:

df[:] = np.where(df['ID'].values[:,None] == df.columns.values,0, df)

输出:

     ID  ID_1  ID_2  ID_3  ID_4  ID_5
0  ID_1   0.0  20.1  31.0  23.1  31.5
1  ID_2   3.0   0.0  23.0  90.0  21.5
2  ID_3   7.0  70.1   0.0  23.0  31.5
3  ID_4   9.0  90.1  43.0   0.0  61.5
4  ID_5  11.0  10.1  11.0  23.0   0.0

推荐阅读