python - 在循环中比较相邻列中重复的行值以清理熊猫中的数据
问题描述
概括
0 101 2017/11 -9999.0 -7.60 -4.00 -9999.0 -9999.0 -4.00 -0.22 1.76 4.64 6.98 8.96 12.56 15.98 19.58 22.46 25.34 28.40
1 101 2017/11 -9999.0 -7.78 -4.36 -9999.0 -9999.0 -4.36 -0.22 1.76 4.64 6.80 8.78 12.56 15.98 19.58 22.46 25.16 28.22
2 101 2017/11 -9999.0 -7.60 -4.18 -9999.0 -9999.0 -4.18 -0.22 1.76 4.46 6.80 8.78 12.56 15.98 19.58 22.46 25.16 28.22
3 101 2017/11 -9999.0 -7.96 -5.26 -9999.0 -9999.0 -5.26 -0.40 1.76 4.46 6.80 8.60 12.38 15.98 19.58 22.46 25.16 28.22
4 101 2017/11 -9999.0 -6.88 -4.36 -9999.0 -9999.0 -4.36 -0.40 1.58 4.46 6.80 8.60 12.38 15.98 19.58 22.46 25.16 28.22
5 101 2017/11 20.30 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06
6 101 2017/11 19.76 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06
7 101 2017/11 20.30 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06 35.06
我需要能够从相邻列具有相同确切数字的列中删除数据。因此,在此示例中,第 5、6 和 7 列将如下所示:
5 2017/11 20.30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 2017/11 19.76 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 2017/11 20.30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
我试过的
我发现的很多答案似乎都在转换,然后表示一个布尔值。
我正在考虑像这样的伪代码来检查相邻的列
for i, row in data.iterrows():
rowvar = i
if data.iloc[i] == rowvar:
data.iloc[i] = np.nan
但这显然行不通。
实际的
ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types
有没有一种简单的方法可以做到这一点,可能更像 Pythonic/Pandas?
解决方案
pandas.diff()
确实是适合您的功能。但是,如果值相等,您需要检查两个方向的列。NaN
如果上一列或下一列具有相同的值,则此代码将所有值设置为:
import numpy as np
data[np.logical_or(data.diff(axis=1) == 0, data.diff(axis=1, periods=-1) == 0)] = np.nan
推荐阅读
- twitter-bootstrap - 如何更新 nuget 文件
- go - 如何向 http.Request 添加额外的标头以跟踪问题
- c# - C#如何将此代码从多行文本修复为从右到左移动的选取框文本上的标签?
- python - Python 中 Pandas 中的 Groupby()
- python - 如何将所有超过 30 天的文件夹复制并移动到 _History 文件夹?
- c++ - cmake 使用已安装目标中的 find_package 包含依赖项
- r - 如何获取特殊字符的原始数字 HTML 表示?
- php - Laravel 多对多表结构的正确方法
- react-native - 如何在 FlatList 中使用 if
- python - 使用 xpath 和 selenium python 单击文本