Python 如果第一列为文本或空白,则删除csv中的行;如果第一列为数字,则仅保留该行

Python 如果第一列为文本或空白,则删除csv中的行;如果第一列为数字,则仅保留该行,python,pandas,Python,Pandas,我有一个csv文件,它有一组交替的文本和数字。我想删除文本,只保留文件中的数字。如果任何行的第一列有文本或为空,我将删除该行。如何在Python中实现这一点 我尝试了不同的代码行(如下),但似乎没有一行是有效的。有人能帮忙吗?谢谢 #dataset.drop(dataset[str.isdigit(dataset[:, 0])].index, inplace=True) #dataset = dataset[~dataset['No'].str] #dataset[dataset[:, 0].a

我有一个csv文件,它有一组交替的文本和数字。我想删除文本,只保留文件中的数字。如果任何行的第一列有文本或为空,我将删除该行。如何在Python中实现这一点

我尝试了不同的代码行(如下),但似乎没有一行是有效的。有人能帮忙吗?谢谢

#dataset.drop(dataset[str.isdigit(dataset[:, 0])].index, inplace=True)
#dataset = dataset[~dataset['No'].str]
#dataset[dataset[:, 0].apply(lambda x: str(x).isdigit())]
#dataset[dataset["No"].str.contains("A")==False]
#dataset = dataset.convert_objects(convert_numeric=True).dropna()
#dataset.columns = ['Rec', 'Depth', 'Time', 'Cone', 'Friction', 'Pore2', '']
#dataset = dataset.dropna(subset=['Rec'])
#dataset = dataset[dataset.Rec != '']  
#indexNames = set(('Program', 'CSV', 'Project number', 'ASCII file created at', 'time', 'Output based 
upon command file', 'Date of testing', 'Location', 'Test name', 'Serial', 'Table', 'Column', 'Rec', 
'Depth', 'Time', 'Cone', 'Friction', 'Pore2'))
#dataset = dataset.loc[~dataset.Rec.str.contains("Program", "CSV")
#dataset.apply(lambda x: pd.to_numeric(x, errors = 'coerce')).dropna()
#dataset.drop(dataset[str.isdigit(dataset[:,0])].index, inplace=True)
#dataset = dataset.filter(regex='a-zA-Z')

考虑这个CSV文件:

some text
more text

1,a,b,c,d
2,b,b,c,d
3,c,b,c,d

some text
more text

4,d,b,c,d
5,e,b,c,d
6,f,b,c,d
然后您可以执行(
re.match
将匹配以数字开头的行):

要创建此数据帧,请执行以下操作:

c1 c2 c3 c4
1 a b c d
2 b c d
3 c b c d
4 d b c d
5 e b c d
6 f b c d

您是否尝试过
中的
skiprows=
参数。读取\u csv()
?类似于
df=pd.read\u csv(“file.csv”,skiprows=14)
文本和数字的集合不断重复(交替的文本行和数字行)。使用skiprow,我可以删除前n行,但不能删除出现在数字之间的行。您好,非常感谢您的回复。您提供的脚本是否适用于下表?我应用了你的代码,但无法使其工作。表说明列ID参数数据表:Rec深度时间1 0.75 150.5 2 0.77 151.47 3 0.79 152.44 4 0.81 153.41 5 0.83 154.38表说明列ID参数名称Rec记录ID记录ID[-]深度[m]数据表:Rec深度时间1 8.5 330.5 2 8.52 331.57 3 8.54 332.63表说明:
import re
import pandas as pd
from io import StringIO


r_line = re.compile(r"\d")
lines = [line for line in open("your file.txt", "r") if r_line.match(line)]

df = pd.read_csv(StringIO("\n".join(lines)), names=["c1", "c2", "c3", "c4"])
print(df)