我有一个字符串值列表,我使用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
答案 0 :(得分:2)
通过为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)
答案 1 :(得分:1)
您实际上几乎正确无误,但不要将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']]
依赖于进一步的转换,但是熊猫可能无法胜任这种任务
答案 2 :(得分:1)
这是您解决问题的方法
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))
答案 3 :(得分:1)
根据您的情况,您可以避免使用readlines
加载文件,而避免使用熊猫来加载文件:
如上所述,该解决方案是标准的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)
另一种方法(在这种情况下,当您无法访问文件或必须处理字符串列表时)可以将字符串列表包装为文本文件,然后使用熊猫正常加载
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="|")
这里是结果