python - 将列系列中的值替换为值 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 的基础知识,并设法编写了将数据排序到一定水平的代码。但是要做到以上几点,我不知道。我需要这个来组织研究项目的数据。
我阅读了关于数组、迭代、字典的解释,但我无法得到我需要的东西。如果有人能给我一个提示,我将非常感激!
解决方案
用于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
推荐阅读
- java - 通过在 Java/Python 中从照片中删除黑色边框,从图像中裁剪精确的文档纸
- python - 如何在类中使用子进程并在 python 中进行测试
- ms-word - Office URI 方案,来自模板(nft)的新文件未将文件保存在提供的位置
- rust - 将结果的错误代码转换为字符串
- netlogo - 有没有办法在 netlogo 中生成 .nls 文件
- cassandra - 在 cassandra cql 中获取用户消息的最佳方式?
- xamarin.forms - xamarin 表单中的水平分组列表视图
- tensorflow - 在 Keras 上运行 VGG-19 和在 11GB GPU 上运行 tensorflow 内存不足
- javascript - Rest API不通过android触发JavaScript但在浏览器中工作
- java - 在异步节俭客户端中传递 URI/上下文路径