亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀取行之間沒有分隔符的文件

讀取行之間沒有分隔符的文件

月關寶盒 2023-04-25 16:25:00
我有一個非常明顯的問題,但我找不到熊貓解決方案(我找到了這個,很接近)。我的文本文件沒有行分隔符。因此,pandas 將文件讀取為具有單行和大量列的數據框。它看起來如下:header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678我想每行讀取三個元素。最終結果應如下所示:header_1  header_2  header_3         1       jan       600        2       feb       900        3       jan       678我怎樣才能告訴文件讀取每三個逗號作為換行符?
查看完整描述

4 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

假設前幾個條目是列名。你可以split文本,找到標題的數量,并對其余數據進行分區以匹配標題的數量:


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


查看完整回答
反對 回復 2023-04-25
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

使用**Split function**后跟切片來創建數據框


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


查看完整回答
反對 回復 2023-04-25
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

您不需要 pandas 來執行此操作,您可以只使用本機 python。如果文件格式正確,即如您所寫

header_1, header_2, header_3, 1, jan, etc

您可以只使用字符串方法,例如將列表拆分和重組為您想要的二維數組形狀。如果您想稍后使用熊貓,您可以從那里創建數據框。


查看完整回答
反對 回復 2023-04-25
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

也許標準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


查看完整回答
反對 回復 2023-04-25
  • 4 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號