首页 > 解决方案 > 将列系列中的值替换为值 1 的相应行

问题描述

我有一个 3842 行和 36 列的 csv 表,类似于:

Time,chlo,coord1,coord2,coord3 

2003,0.52, NaN, NaN, 1.0

2003,0.56, NaN, 1.0, NaN

2003,0.58, 1.0, NaN, NaN

我需要一个代码,它会在每一行中分别用左列 CHLO 的值自动替换 1.0。最后,CHLO 列应该消失。

最终结果将类似于:

Time,coord1,coord2,coord3 

2003, NaN, NaN, 0.52

2003, NaN, 0.56, NaN

2003, 0.58, NaN, NaN

我是初学者,我已经学习了一些 python 的基础知识,并设法编写了将数据排序到一定水平的代码。但是要做到以上几点,我不知道。我需要这个来组织研究项目的数据。

我阅读了关于数组、迭代、字典的解释,但我无法得到我需要的东西。如果有人能给我一个提示,我将非常感激!

标签: pythonpandas

解决方案


用于DataFrame.mask按条件替换,DataFrame.pop用于提取列chlo

如果第一列不是索引:

df.iloc[:, 2:] = df.iloc[:, 2:].mask(df == 1, df.pop('chlo'), axis=0)
print (df)
   Time  coord1  coord2  coord3
0  2003     NaN     NaN    0.52
1  2003     NaN    0.56     NaN
2  2003     1.0     NaN     NaN

如果第一列是索引:

df = df.mask(df == 1, df.pop('chlo'), axis=0)
print (df)

      coord1  coord2  coord3
Time                        
2003     NaN     NaN    0.52
2003     NaN    0.56     NaN
2003    0.58     NaN     NaN

推荐阅读