【问题标题】:Convert list of multiple strings into a Python data frame将多个字符串列表转换为 Python 数据框
【发布时间】:2020-01-20 07:20:46
【问题描述】:

我有一个字符串值列表,我是从带有splitlines 的文本文档中读取的。这会产生类似的东西

       X = ["NAME|Contact|Education","SMITH|12345|Graduate","NITA|11111|Diploma"]

我试过了

for i in X:
    textnew = i.split("|")
    data[x] = textnew

我想用这个制作一个数据框

    Name     Contact      Education
    SMITH     12345        Graduate
    NITA      11111        Diploma

【问题讨论】:

  • 使用pd.read_csv("filename", sep="|")

标签: python string pandas list dataframe


【解决方案1】:

您可以通过将sep 参数指定给pd.read_csv 来直接从文件中读取它。

df = pd.read_csv("/path/to/file", sep='|')

或者如果你想从字符串列表中转换它:

data = [row.split('|') for row in X]
headers = data.pop(0) # Pop the first element since it's header
df = pd.DataFrame(data, columns=headers)

【讨论】:

  • @NiraliKhoda 您能否标记它是否有效,以便对其他人有所帮助?
【解决方案2】:

您实际上几乎是正确的,但不要使用 data 作为字典(通过使用键 - data[x] = textnew):

X = ["NAME|Contact|Education","SMITH|12345|Graduate","NITA|11111|Diploma"]
df = []

for i in X:
    df.append(i.split("|"))

print(df)

# [['NAME', 'Contact', 'Education'], ['SMITH', '12345', 'Graduate'], ['NITA', '11111', 'Diploma']]

取决于进一步的转换,但对于此类任务,pandas 可能有点过分了

【讨论】:

    【解决方案3】:

    这里有一个解决您问题的方法

    import pandas as pd
    X = ["NAME|Contact|Education","SMITH|12345|Graduate","NITA|11111|Diploma"]
    data = []
    for i in X:
        data.append( i.split("|") )
    df = pd.DataFrame( data, columns=data.pop(0))
    

    【讨论】:

      【解决方案4】:

      在您的情况下,您可以避免使用 readlines 加载文件并使用 pandas 来小心加载文件:

      如上所述,解决方案是标准的read_csv

      import os
      import pandas as pd
      path = "/tmp"
      filepath = "file.xls"
      filename = os.path.join(path,filepath)
      df = pd.read_csv(filename, sep='|')
      print(df.head)
      

      另一种方法(在您无法访问文件或必须处理字符串列表的情况下)可以将字符串列表包装为文本文件,然后使用 pandas 正常加载

      import pandas as pd
      from io import StringIO
      
      X = ["NAME|Contact|Education", "SMITH|12345|Graduate", "NITA|11111|Diploma"]
      # Wrap the string list as a file of new line
      DATA = StringIO("\n".join(X))
      # Load as a pandas dataframe
      df = pd.read_csv(DATA, delimiter="|")
      

      这里是结果

      【讨论】:

        猜你喜欢
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 2019-04-28
        • 2019-09-14
        • 2017-12-19
        • 2014-08-06
        相关资源
        最近更新 更多