我想读取CSV文件使用Python的skiprows动态条件后。
条件-每当我在CSV中找到6个cols时,或者当我找到colnames序列时,从那里读取。
File.csv
Col1,col2,col3
1,2,3
13,u,u
,,,
,,,
Col1,col2,col3,col4
1,2,3,4
13,u,u,y
,,,
,,,
Col1,col2,col3,col4,col5,col6
1,2,3,4,5,6
qw,ers,hh,yj,df,ji
现在我使用pandas.read_csv()
阅读这个文件
我知道在第10行我需要cols。pandas.read_csv("file.csv", skiprows=10, header=None)
想要跳过这个动态跳过行时,我们6列或在这个序列col 1,col 2,col 3,col 4,col 5,col 6。
start = df.loc[df.FILE-START == 'col1,col2,col3,col4,col5,col6'].index[0]
df = pd.read_csv(filename, skiprows = start + 1)
我试过了,但它不工作。
3条答案
按热度按时间zzzyeukh1#
更新
使用
csv
模块的更健壮版本:旧答案
你可以一行一行地读这个文件,直到你找到6列或者5个逗号(注意它们之间是否有引号和逗号,但是对于一个简单的csv文件来说是可以的:
输出:
mpgws1up2#
pandas的
DataFrame
* 构造函数 * 的另一个选项:正如@Corralien所解释的那样,使用这种方法,pandas失去了推断每列数据类型的能力,因为
csv.reader
总是返回一个字符串列表。csv.reader(csvfile,dialect='excel',**fmtparams)
返回一个reader对象,它将迭代给定的csvfile中的行。csvfile可以是任何支持迭代器协议的对象,并且每次调用它的_next_()方法时返回一个字符串-文件对象和列表对象都适用。从csv文件读取的每一行都以字符串列表的形式返回。
输出:
bq9c1y663#
您可以使用以下方法:
我认为上面所有的代码都是不言自明的。希望这对你有帮助。