gpt4 book ai didi

python - 根据它们的类型和值删除 "faulty"行 pandas 数据帧

转载 作者:行者123 更新时间:2023-11-28 17:23:54 25 4
gpt4 key购买 nike

我有一个数据集,其中包含一列日期和时间值以及另一列包含一些测量值( float )。然而,在一些测量过程中,发生了错误,导致了一些奇怪的条目——下面的例子(这些包括 datetime 对象的重复部分,它被解释为字符串、不完整的 datetime 对象、完全随机的字符串、缺失值或另一列超出范围(测量值大多在 10 到 50 之间,但有时我会得到零或类似 100 的值)。

从大型数据集中提取(作为 pandas 数据框加载):

                                      t                          baaa
0 13/11/2014 23:43 17.6
1 13/11/2014 23:44 17.7
2 2014-11-13 23:452014-11-13 23:45:00 17.7
3 13/11/2014 23:46 17.7
4 14/11/2014 00:34 16
5 14/11/2014 00:35 15.9
6 :00 17.7
7 14/11/2014 01:25 14.9
8 14/11/2014 01:26 14.9
9 0 80
10 14/11/2014 02:16 14.3
11 14/11/2014 02:17 14.3
12 NaN AA550112209500080009002855AA
13 14/11/2014 03:09 13
14 009000B002B55AA NaN
15 14/11/2014 02:19 14.3
16 14/11/2014 03:59 12.6
17 14/11/2014 04:00 12.6
18 14/11/2014 05:41 11.7
19 14/11/2014 05:42 11.7
20 0 140
21 14/11/2014 04:53 12.2

所有类型的错误条目示例都在这里。我怎样才能摆脱错误的线路?我的想法是做一个 if 循环,设置 't' 列应该是 datetime 对象并且 'baaa' 列应该是 float > 0 和 < 60 的条件。如果条件不满足,我将替换值与 np.nan 并最终使用 dropna 函数。

df['t'] = pd.to_datetime(df['t'], format = '%d/%m/%Y %H:%M', errors='coerce')
df.iloc[:,1] = pd.to_numeric(df.iloc[:,1], errors='coerce')
for line in df.iloc[:,1]:
if (line < 60) & (line > 0):
line = line
else:
line = np.nan
# not assigning this new value! :(

df = df.dropna(subset = df.columns.values, how='any', inplace=True)

这似乎解决了大部分问题,除了线需要低于60的情况。我一定是语法错误?或者这里有什么问题?谢谢!

最佳答案

我想你需要boolean indexing用于过滤,而不是 dropna您可以使用 notnull 添加新的(第三个)条件- 获取 t 列中的所有非 NaN 值。第一列中的 NaN 值按第一个和第二个条件过滤:

df['t'] = pd.to_datetime(df['t'], format = '%d/%m/%Y %H:%M', errors='coerce')
df.iloc[:,1] = pd.to_numeric(df.iloc[:,1], errors='coerce')
df = df[(df.iloc[:,1] < 60) & (df.iloc[:,1] > 0) & (df['t'].notnull())]

print (df)
t baaa
0 2014-11-13 23:43:00 17.6
1 2014-11-13 23:44:00 17.7
3 2014-11-13 23:46:00 17.7
4 2014-11-14 00:34:00 16.0
5 2014-11-14 00:35:00 15.9
7 2014-11-14 01:25:00 14.9
8 2014-11-14 01:26:00 14.9
10 2014-11-14 02:16:00 14.3
11 2014-11-14 02:17:00 14.3
13 2014-11-14 03:09:00 13.0
15 2014-11-14 02:19:00 14.3
16 2014-11-14 03:59:00 12.6
17 2014-11-14 04:00:00 12.6
18 2014-11-14 05:41:00 11.7
19 2014-11-14 05:42:00 11.7
21 2014-11-14 04:53:00 12.2

关于python - 根据它们的类型和值删除 "faulty"行 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com