gpt4 book ai didi

python - 努力创建数据帧,ParserError : Error tokenizing data. C 错误 : Expected 12 fields in line 15, 看到 16

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:54 24 4
gpt4 key购买 nike

我正在尝试创建一个在文本文件中读取的数据框。我已执行以下操作:

result = pd.read_csv("EconData.txt", sep="\s+", header=None)

但我不断收到:

'Error tokenizing data. C error: Expected 12 fields in line 15, saw 16'

我知道这可能是因为某些行可能包含额外的列,而没有为这些值创建实际的列。但是,我需要合并从 5 开始的所有列,因为这是一个长字符串的一部分,由于我使用的分隔符,该字符串似乎被分隔开。

下面是我的文本文件的布局示例。如果我想在日期、时间、缩写和消息之间进行拆分,那么最好的方法是什么。

16/10/2018, 20:00 - MP: The walkie talkie app

16/10/2018, 20:00 - MP: Dobby remembers

最佳答案

抱歉,我首先误解了你的问题。我以为你正在解析文本。

如果您想导入每行末尾有一个文本字段的 csv,该文本字段可能包含分隔符,但未正确引用,您可以按如下方式操作:

  1. 将文件加载到一个文本列
  2. 拆分所需的列数,忽略最后一列中的分隔符

您可以按如下方式执行此操作:

df= pd.read_csv(your_file_name, sep='\n', names=['text'])
# now split the first 5 columns
df_split= df['text'].str.split('\s+', n=5, expand=True)

如果您的数据框包含列名称,您可以像这样恢复它们

df_split.columns= df_split.iloc[0].to_list()
df_split.drop(df.index[0], inplace=True)

唯一的缺点是,这样您的列都将是对象类型。因此,您要么需要自己将列转换为所需的类型,要么如果您想使用 pandas 的自动类型检测,您也可以将文件写回文件(或者 io.StringIO 的实例,如果它不大) )并从 pandas 中重读它。 Pandas 会通过自动添加引号来处理分隔符,因此当您重新阅读时,不会再遇到同样的问题。

测试:

raw="""col1 col2 col3 col4 col5 col6
1 2 3 4 5 6 7 8 9
a b c d
A B C D E F G H I J"""
df= pd.read_csv(io.StringIO(raw), sep='\n', names=['text'])
# now split the first 5 columns
df_split= df['text'].str.split('\s+', n=5, expand=True)
df_split.columns= df_split.iloc[0].to_list()
df_split.drop(df.index[0], inplace=True)

Out[373]:
col1 col2 col3 col4 col5 col6
1 1 2 3 4 5 6 7 8 9
2 a b c d None None
3 A B C D E F G H I J

关于python - 努力创建数据帧,ParserError : Error tokenizing data. C 错误 : Expected 12 fields in line 15, 看到 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com