当前位置: 首页 > 面试题库 >

将文本导入具有多个分隔符的熊猫

梅玉堂
2023-03-14
问题内容

我有一些看起来像这样的数据:

c stuff
c more header
c begin data         
 1 1:.5
 1 2:6.5
 1 3:5.3

我想将其导入3列数据框,例如

a , b, c
1,  1, 0.5
etc

我一直试图读取数据,因为2列在’:’上分割,然后在’‘上分割了第一列。但是我发现它令人讨厌。是否有更好的方法可以直接在导入时对其进行分类?

目前:

data1 = pd.read_csv(file_loc, skiprows = 3, delimiter = ':', names = ['AB', 'C'])
data2 = pd.DataFrame(data1.AB.str.split(' ',1).tolist(), names = ['A','B'])

但是,由于我的数据处于领先地位,这使情况更加复杂。

我觉得这应该是一个简单的任务,但是目前我正在考虑逐行读取它,并在导入之前使用一些find replace清理数据。


问题答案:

一种方法可能是使用python引擎允许的正则表达式分隔符。例如:

>>> !cat castle.dat
c stuff
c more header
c begin data         
 1 1:.5
 1 2:6.5
 1 3:5.3
>>> df = pd.read_csv('castle.dat', skiprows=3, names=['a', 'b', 'c'], 
                     sep=' |:', engine='python')
>>> df
   a  b    c
0  1  1  0.5
1  1  2  6.5
2  1  3  5.3


 类似资料:
  • 我有一个源代码,它读取文本文件并存储到一个元组类型的向量中: 包含以下数据: 因此数据由空格+垂直线+空格(多重分隔符)分隔。 如何更改源代码以处理多个分隔符? 注意:如果数据仅用空格隔开,则程序可以工作。

  • 问题内容: 似乎pandas read_csv 函数仅允许使用单个字符定界符/分隔符。有没有办法允许使用字符串“ * | *”或“ %%”代替? 问题答案: 解决方案是使用read_table而不是read_csv: 因此,我们可以阅读以下内容:

  • 问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况:

  • 问题内容: 我是python的新手,我正在尝试使用下面显示的代码来执行上面的标题所说的。它一直运行到我要求保存xls输出的位置。任何帮助将不胜感激。 [编辑]此代码有效。 问题答案: 我相信,您需要为输出电子表格设置编码。您需要知道该文件正在使用什么编码。csv模块不直接支持unicode,但它仅适用于大多数西方语言。 在不知道文本文件的编码是什么的情况下,您有两个选择。选项1是根据python使

  • 问题内容: 我以以下模式将数据库表表示为文本文件: 我需要将此数据导入到SQL Server 2008数据库表中。我已经创建了具有与模式匹配的类型的表。 如何将这些数据导入表? 编辑:通过选择答案来解决。请注意将来遇到任何麻烦的人:数据类型需要转换。参考:http : //social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thre

  • 我有一个1.5GB.dat文件需要作为pandas数据帧导入,我遇到了内存问题(8GB RAM)。如何将dat文件分解成块来执行分析?