【问题标题】:Separating csv columns with delimiter / sep用分隔符 / sep 分隔 csv 列
【发布时间】: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 = '&gt;' 时,出现以下错误:ParserError: '&gt;' expected after '"',而当我尝试使用 sep = '\&gt;' 时,出现以下错误: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.

这些错误让我查看了多个资源,包括 thisthis 等。

但是,我没有找到任何资源可以成功演示如何在使用“>”分隔符后分隔一行中的每一列。如果有人知道如何做到这一点,请告诉我。非常感谢您的帮助!

更新:

这是 CSV 文件的实际屏幕截图,以便更好地理解我在上面试图演示的内容。我的最终目标是让所有数据都是 I+ 列中的一个描述性因素的数据,而不是像现在这样的许多数据。

【问题讨论】:

  • 数据是用方括号和尖括号分开的吗?你能发布几行输入和预期输出吗?
  • @tdelaney 我在我的帖子中添加了新信息,以帮助详细说明您的问题。如果您需要我提供更多信息,请告诉我。谢谢。
  • 看起来它最初是一个 html 页面,带有一个将表格转换为 Excel 的工具。在原始 XML 中抓取数据可能更容易。将此表导出为 CSV,然后导入 python 应该会给你 html 片段。也许您可以使用csv 模块,而不是pandas,然后使用BeautifulSoup 来解析和提取数据。您对哪些栏目感兴趣?

标签: python pandas csv


【解决方案1】:

这行得通吗:

string="[<1><2>][<3><4>][][]"
string=string.replace("[","")
string=string.replace("]","")
string=string.replace("<","[")
string=string.replace(">","]")
print(string)

结果:

[1][2][3][4]

【讨论】:

    【解决方案2】:

    我最终使用了 Google 表格。上传 csv 后,会有一个标题为“数据”的标题,然后是一个标题为“将文本拆分为列”的子部分。

    如果您想以更快的方式使用代码执行此操作,您还可以使用 pandas 执行以下操作:

    # new data frame with split value columns 
    new = data["Name"].str.split(" ", n = 1, expand = True) 
    
    # making separate first name column from new data frame 
    data["First Name"]= new[0] 
    
    # making separate last name column from new data frame 
    data["Last Name"]= new[1] 
    
    # Dropping old Name columns 
    data.drop(columns =["Name"], inplace = True) 
    
    # df display 
    data 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2015-08-09
      • 2013-06-09
      • 1970-01-01
      相关资源
      最近更新 更多