gpt4 book ai didi

python - 如何在 Pandas 的列中删除不包含字符串类型的行?

转载 作者:太空狗 更新时间:2023-10-30 00:54:24 26 4
gpt4 key购买 nike

我有一个包含四列的 csv 文件。我是这样读的:

df = pd.read_csv('my.csv', error_bad_lines=False, sep='\t', header=None, names=['A', 'B', 'C', 'D'])

现在,字段 C 包含字符串值。但是在某些行中有非字符串类型( float 或数字)的值。如何删除这些行?我使用的是 Pandas 0.18.1 版。

最佳答案

设置

df = pd.DataFrame([['a', 'b', 'c', 'd'], ['e', 'f', 1.2, 'g']], columns=list('ABCD'))
print df

A B C D
0 a b c d
1 e f 1.2 g

请注意,您可以看到各个细胞类型。

print type(df.loc[0, 'C']), type(df.loc[1, 'C'])

<type 'str'> <type 'float'>

蒙版和切片

print df.loc[df.C.apply(type) != float]

A B C D
0 a b c d

更一般

print df.loc[df.C.apply(lambda x: not isinstance(x, (float, int)))]

A B C D
0 a b c d

您还可以使用 float 来尝试确定它是否可以是 float 。

def try_float(x):
try:
float(x)
return True
except:
return False

print df.loc[~df.C.apply(try_float)]

A B C D
0 a b c d

这种方法的问题是您将排除可以解释为 float 的字符串。

比较我提供的几个选项的时间以及 jezrael 的小型数据帧解决方案。

enter image description here

对于具有 500,000 行的数据框:

enter image description here

检查其类型是否为 float 似乎是最有效的,紧随其后的是数字。如果您需要检查 int 和 float,我会接受 jezrael 的回答。如果您可以不用检查 float ,就使用那个。

关于python - 如何在 Pandas 的列中删除不包含字符串类型的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38091444/

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