4 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
假設(shè)前幾個(gè)條目是列名。你可以split文本,找到標(biāo)題的數(shù)量,并對(duì)其余數(shù)據(jù)進(jìn)行分區(qū)以匹配標(biāo)題的數(shù)量:
data = """header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678"""
header = [head.strip() for head in data.split(',') if head.strip().startswith('header')]
rest = [head.strip() for head in data.split(',') if not head.strip().startswith('header')]
length = len(header)
rest = [rest[n:n+length] for n in range(0, len(rest), length)]
pd.DataFrame(rest, columns = header)
header_1 header_2 header_3
0 1 jan 600
1 2 feb 900
2 3 jan 678

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用**Split function**后跟切片來(lái)創(chuàng)建數(shù)據(jù)框
a="header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678"
a=a.split(",")
a1=[]
a2=[]
a3=[]
for i in range(0,len(a)):
if(i%3==2):
a1.append(a[i])
elif(i%3==1):
a2.append(a[i])
else:
a3.append(a[i])
data={a3[0]:a3[1:],a2[0]:a2[1:],a1[0]:a1[1:]}
df=pd.DataFrame(data)
輸出
header_1 header_2 header_3
0 1 jan 600
1 2 feb 900
2 3 jan 678

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不需要 pandas 來(lái)執(zhí)行此操作,您可以只使用本機(jī) python。如果文件格式正確,即如您所寫(xiě)
header_1, header_2, header_3, 1, jan, etc
您可以只使用字符串方法,例如將列表拆分和重組為您想要的二維數(shù)組形狀。如果您想稍后使用熊貓,您可以從那里創(chuàng)建數(shù)據(jù)框。

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
也許標(biāo)準(zhǔn)str.split()就足夠了:
txt = '''header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678'''
txt = txt.split(',')
df = pd.DataFrame([*zip(txt[3::3], txt[4::3], txt[5::3])], columns=[*txt[0:3]])
print(df)
印刷:
header_1 header_2 header_3
0 1 jan 600
1 2 feb 900
2 3 jan 678
添加回答
舉報(bào)