Python使用空格sep从csv读取数据,第一列除外
您好,我想知道是否有一种方法可以使用pandas read_csv从csv文件中读取数据,除了第一列之外,每个条目都用空格分隔:Python使用空格sep从csv读取数据,第一列除外,python,pandas,dataframe,Python,Pandas,Dataframe,您好,我想知道是否有一种方法可以使用pandas read_csv从csv文件中读取数据,除了第一列之外,每个条目都用空格分隔: Alabama 400 300 200 New York 400 200 100 Missouri 400 200 50 District of Columbia 450 100 250 因此将有4列,第一列是state。与不在数据中的分隔符一起使用,如|,然后与参数n=3一起使用,以便从右侧按3个空格进行拆分,expand=True用于DataFrame: imp
Alabama 400 300 200
New York 400 200 100
Missouri 400 200 50
District of Columbia 450 100 250
因此将有4列,第一列是state。与不在数据中的分隔符一起使用,如|
,然后与参数n=3
一起使用,以便从右侧按3个空格进行拆分,expand=True
用于DataFrame
:
import pandas as pd
temp=u"""Alabama 400 300 200
New York 400 200 100
Missouri 400 200 50
District of Columbia 450 100 250"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="|", names=['Data'])
print (df)
Data
0 Alabama 400 300 200
1 New York 400 200 100
2 Missouri 400 200 50
3 District of Columbia 450 100 250
df = df['Data'].str.rsplit(n=3, expand=True)
print (df)
0 1 2 3
0 Alabama 400 300 200
1 New York 400 200 100
2 Missouri 400 200 50
3 District of Columbia 450 100 250
您还可以使用正则表达式来拆分字符串
import regex as re
r = re.compile("([\w\s]+)\s+([\d]+)\s+([\d]+)\s+([\d]+)")
data = r.match('New York 400 200 100')
split_list = [data.group(1),data.group(2),data.group(3),data.group(4)]
输出将是:
[‘纽约’、‘400’、‘200’、‘100’]
您只需创建列表的最终列表并将其写入csv文件。原始数据是什么样子的?这是个问题