gpt4 book ai didi

python-3.x - 如何在 pd.read.csv() 函数中使用 “na_values=' ?'” 选项?

转载 作者:行者123 更新时间:2023-12-03 09:07:06 25 4
gpt4 key购买 nike

我正在尝试在 pd.read.csv() 函数中查找带有 na_values='?' 选项的操作。

这样我就可以找到包含“?”的行列表值,然后删除该值。

最佳答案

示例:

import pandas as pd
from pandas.compat import StringIO

#test data
temp=u"""id,col1,col2,col3
1,13?,15,14
1,13,15,?
1,12,15,13
2,?,15,?
2,18,15,13
2,18?,15,13"""
#in real data use
#df = pd.read_csv('test.csv')
df = pd.read_csv(StringIO(temp))
print (df)
id col1 col2 col3
0 1 13? 15 14
1 1 13 15 ?
2 1 12 15 13
3 2 ? 15 ?
4 2 18 15 13
5 2 18? 15 13

如果想要删除带有 ? 的值,这些值是单独的,或者子字符串需要由 str.contains 创建的掩码然后通过 DataFrame.any 检查每行是否至少有一个 True :

print (df.astype(str).apply(lambda x: x.str.contains('?', regex=False)))
id col1 col2 col3
0 False True False False
1 False False False True
2 False False False False
3 False True False True
4 False False False False
5 False True False False

m = ~df.astype(str).apply(lambda x: x.str.contains('?', regex=False)).any(axis=1)
print (m)
0 False
1 False
2 True
3 False
4 True
5 False
dtype: bool

df = df[m]
print (df)
id col1 col2 col3
2 1 12 15 13
4 2 18 15 13

如果只想单独替换只需比较值:

print (df.astype(str) == '?')
id col1 col2 col3
0 False False False False
1 False False False True
2 False False False False
3 False True False True
4 False False False False
5 False False False False

m = ~(df.astype(str) == '?').any(axis=1)
print (m)
0 True
1 False
2 True
3 False
4 True
5 True
dtype: bool

df = df[m]
print (df)
id col1 col2 col3
0 1 13? 15 14
2 1 12 15 13
4 2 18 15 13
5 2 18? 15 13

将所有 ? 替换为 NaN 是必要的参数 na_valuesdropna如果要删除所有带有 NaN 的行:

import pandas as pd
from pandas.compat import StringIO

#test data
temp=u"""id,col1,col2,col3
1,13?,15,14
1,13,15,?
1,12,15,13
2,?,15,?
2,18,15,13
2,18?,15,13"""
#in real data use
#df = pd.read_csv('test.csv', na_values='?')
df = pd.read_csv(StringIO(temp), na_values='?')
print (df)
id col1 col2 col3
0 1 13? 15 14.0
1 1 13 15 NaN
2 1 12 15 13.0
3 2 NaN 15 NaN
4 2 18 15 13.0
5 2 18? 15 13.0


df = df.dropna()
print (df)
id col1 col2 col3
0 1 13? 15 14.0
2 1 12 15 13.0
4 2 18 15 13.0
5 2 18? 15 13.0

关于python-3.x - 如何在 pd.read.csv() 函数中使用 “na_values=' ?'” 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397526/

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