Python 从csv中删除特定列中包含非数字内容的行
以下是我的测试数据(csv格式): 目标是消除字符串为Python 从csv中删除特定列中包含非数字内容的行,python,csv,conditional,Python,Csv,Conditional,以下是我的测试数据(csv格式): 目标是消除字符串为user\u id的所有行。我想知道如何测试与某个列对应的每一行的内容是否是字符串。它可以是任何字符串 我已经在编写代码方面迈出了一小步,但我必须承认我不知道如何继续编写if部分 import csv reader = csv.reader(open("file.csv", "rb"), delimiter=",", quotechar='"') for line in reader: if ##column 'user_id' is
user\u id
的所有行。我想知道如何测试与某个列对应的每一行的内容是否是字符串。它可以是任何字符串
我已经在编写代码方面迈出了一小步,但我必须承认我不知道如何继续编写if
部分
import csv
reader = csv.reader(open("file.csv", "rb"), delimiter=",", quotechar='"')
for line in reader:
if ##column 'user_id' is not a string##
print line
任何提示都将不胜感激。您可以使用它来测试字符串是否只包含数字:
if line[1].isdigit():
# all digits
filtered_df = df[df['user_id'].apply(lambda x: str(x).isdigit())]
演示:
您可以使用测试字符串是否仅包含数字:
if line[1].isdigit():
# all digits
filtered_df = df[df['user_id'].apply(lambda x: str(x).isdigit())]
演示:
此解决方案使用Pandas库。我将进行如下工作
import pandas as pd
df = pd.read(your_file)
从您提供的字符串中选择:
导入StringIO
df=pd.read\u csv(StringIO.StringIO(您的csf文件作为字符串))
df包含一个包含所有数据的数据帧:
id user_id value
0 1 1001 111
1 2 1002 222
2 3 h82kn9;2&3 333
3 4 jsidofj882 444
现在是筛选,我们选择感兴趣的列(用户id)并通过选择仅包含数字的字符串进行筛选:
if line[1].isdigit():
# all digits
filtered_df = df[df['user_id'].apply(lambda x: str(x).isdigit())]
过滤的_df只包含预期的前2行:
id user_id value
0 1 1001 111
1 2 1002 222
此解决方案使用Pandas库。我将进行如下工作
import pandas as pd
df = pd.read(your_file)
从您提供的字符串中选择:
导入StringIO
df=pd.read\u csv(StringIO.StringIO(您的csf文件作为字符串))
df包含一个包含所有数据的数据帧:
id user_id value
0 1 1001 111
1 2 1002 222
2 3 h82kn9;2&3 333
3 4 jsidofj882 444
现在是筛选,我们选择感兴趣的列(用户id)并通过选择仅包含数字的字符串进行筛选:
if line[1].isdigit():
# all digits
filtered_df = df[df['user_id'].apply(lambda x: str(x).isdigit())]
过滤的_df只包含预期的前2行:
id user_id value
0 1 1001 111
1 2 1002 222
Python说
type(“1000”)
是
,你是说数字与字母的字符串吗?是的,对不起,我的意思是我只想保留所有数字的用户id。Python说type(“1000”)
是
,你是指数字与字母的字符串吗?是的,对不起,我的意思是我只想保留所有数字的用户id
。这也很优雅,我不知道熊猫图书馆。谢谢你的建议!这也很优雅,我不知道熊猫图书馆。谢谢你的建议!