【发布时间】:2020-08-05 20:55:15
【问题描述】:
我的目标是将存储在单元格中的数据分离到同一行的多列中。
例如,我想获取如下所示的数据:
Row 1: [<1><2>][<3><4>][][]
Row 2: [<1><2>][<3><4>][][]
变成如下所示的数据:
Row 1: [1][2][3][4]
Row 2: [1][2][3][4]
我尝试使用下面的代码来提取 csv 并在“>”处分隔每一行
df = pd.read_csv('file.csv', engine='python', sep="\*>", header=None)
但是,代码未按预期运行。相反,分离发生在看似随机且不可预测的点上(我确信有一个模式,但我没有看到它。)每次中断都会创建另一行而不是另一列。例如:
Row 1: [<1>][<2>]
Row 2: [<3>]
Row 3: [<4>]
我认为问题可能在于读取 CSV 文件,所以我尝试重新抓取包含分隔符的站点,但它产生了相同的结果,所以我假设它是分隔符调用的问题。但是,在尝试了许多其他导致各种错误的调用后,我发现了该调用。例如,当我尝试使用 sep = '>' 时,出现以下错误:ParserError: '>' expected after '"',而当我尝试使用 sep = '\>' 时,出现以下错误:ParserError: Expected 36 fields in line 1106, saw 120. Error could possibly be due to quotes being ignored when a multi-char delimiter is used.
这些错误让我查看了多个资源,包括 this 和 this 等。
但是,我没有找到任何资源可以成功演示如何在使用“>”分隔符后分隔一行中的每一列。如果有人知道如何做到这一点,请告诉我。非常感谢您的帮助!
更新:
这是 CSV 文件的实际屏幕截图,以便更好地理解我在上面试图演示的内容。我的最终目标是让所有数据都是 I+ 列中的一个描述性因素的数据,而不是像现在这样的许多数据。
【问题讨论】:
-
数据是用方括号和尖括号分开的吗?你能发布几行输入和预期输出吗?
-
@tdelaney 我在我的帖子中添加了新信息,以帮助详细说明您的问题。如果您需要我提供更多信息,请告诉我。谢谢。
-
看起来它最初是一个 html 页面,带有一个将表格转换为 Excel 的工具。在原始 XML 中抓取数据可能更容易。将此表导出为 CSV,然后导入 python 应该会给你 html 片段。也许您可以使用
csv模块,而不是pandas,然后使用BeautifulSoup 来解析和提取数据。您对哪些栏目感兴趣?