Python 标记数据时出错。C错误:在第j行中预期有n个字段,通过忽略额外的列看到k修复了吗?
我有一个坏的csv文件,看起来像这样:Python 标记数据时出错。C错误:在第j行中预期有n个字段,通过忽略额外的列看到k修复了吗?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个坏的csv文件,看起来像这样: model, height, strength 1, 124.5, 63 2, 160.4, 85 3, 144.6, 94, 88 4, 122.5, 36, 29 5, 132, 22 6, 140.6, 46, 200, 0.8 我想创建一个dataframe,它接受所有行,但忽略任何额外的列值,因此它将接受所有6行的列model、height和strength,但分别忽略第3、4、6和6行上的值88、29、200和0.8 我可以在pd.read\
model, height, strength
1, 124.5, 63
2, 160.4, 85
3, 144.6, 94, 88
4, 122.5, 36, 29
5, 132, 22
6, 140.6, 46, 200, 0.8
我想创建一个dataframe,它接受所有行,但忽略任何额外的列值,因此它将接受所有6行的列model、height和strength,但分别忽略第3、4、6和6行上的值88、29、200和0.8
我可以在pd.read\u csv中使用error\u bad\u lines=False来处理特定的行,但这会直接忽略这些行,这是我不想做的
那么熊猫有没有办法做到这一点呢
感谢您的帮助这里有一个方法:
使用任何其他分隔符读取文件:
df = pd.read_csv(pd.compat.StringIO("""model, height, strength
1, 124.5, 63
2, 160.4, 85
3, 144.6, 94, 88
4, 122.5, 36, 29
5, 132, 22
6, 140.6,46, 200, 0.8"""),sep='|')
方法1:
基于逗号分割值,并在轴=1上创建新的df和dropna
方法二:阅读后用sep='|'
我将使用
from pandas.compat import StringIO
dat = """model, height, strength
1, 124.5, 63
2, 160.4, 85
3, 144.6, 94, 88
4, 122.5, 36, 29
5, 132, 22
6, 140.6, 46, 200, 0.8"""
df = pd.read_csv(StringIO(dat), sep=',',header=None,names=range(1,10))
df=df.iloc[:,:3].T.set_index(0).T
df
0 model height strength
1 1 124.5 63
2 2 160.4 85
3 3 144.6 94
4 4 122.5 36
5 5 132 22
6 6 140.6 46
model height strength
0 1 124.5 63
1 2 160.4 85
2 3 144.6 94
3 4 122.5 36
4 5 132 22
5 6 140.6 46
cols=df.columns.str.split(',')[0]
df=pd.DataFrame(df.iloc[:,0].str.split(',').str[:len(cols)].values.tolist(),columns=cols)
model height strength
0 1 124.5 63
1 2 160.4 85
2 3 144.6 94
3 4 122.5 36
4 5 132 22
5 6 140.6 46
from pandas.compat import StringIO
dat = """model, height, strength
1, 124.5, 63
2, 160.4, 85
3, 144.6, 94, 88
4, 122.5, 36, 29
5, 132, 22
6, 140.6, 46, 200, 0.8"""
df = pd.read_csv(StringIO(dat), sep=',',header=None,names=range(1,10))
df=df.iloc[:,:3].T.set_index(0).T
df
0 model height strength
1 1 124.5 63
2 2 160.4 85
3 3 144.6 94
4 4 122.5 36
5 5 132 22
6 6 140.6 46