我有以下名為 my_list 的串列,并希望將其轉換為新的 pandas 資料框,其中以 'I=' 開頭的字串將成為資料框的行標簽。
my_list=['I=113',
'PLAN=1',
'A=0PDFGB',
'B=23FGC',
'C=26TGFGD',
'D=19TGE',
'E=18TGA',
'I=120',
'PLAN=2',
'A=0PDFGB',
'B=23FGC',
'C=26TGFGD',
'D=19TGE',
'E=18TGA',
'I=113',
'PLAN=2',
'A=0PDFGB',
'B=23FGC',
'C=26TGFGD',
'D=19TGE',
'E=18TGA']
輸出將如下所示:
--------------------------------------------------------
I=113|PLAN=1|A=0PDFGB|B=23FGC|C=26TGFGD|D=19TGE|E=18TGA
--------------------------------------------------------
I=120|PLAN=2|A=0PDFGB|B=23FGC|C=26TGFGD|D=19TGE|E=18TGA
-------------------------------------------------------
等等...
uj5u.com熱心網友回復:
我們可以使用回圈將串列切割成子串列并使用 DataFrame 建構式:
tmp = []
for item in my_list:
if item.startswith('I'):
tmp.append([])
tmp[-1].append(item)
out = pd.DataFrame(tmp)
輸出:
0 1 2 3 4 5 6
0 I=113 PLAN=1 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
1 I=120 PLAN=2 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
2 I=113 PLAN=2 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
uj5u.com熱心網友回復:
使用np.reshape:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.reshape(my_list, (-1, 7)))
print(df)
# Output
0 1 2 3 4 5 6
0 I=113 PLAN=1 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
1 I=120 PLAN=2 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
2 I=113 PLAN=2 A=0PDFGB B=23FGC C=26TGFGD D=19TGE E=18TGA
更新
您還可以將值拆分為:
df = pd.DataFrame([x.split('=') for x in my_list], columns=['col', 'val']) \
.assign(row=lambda x: x['col'].eq('I').cumsum()).pivot('row', 'col', 'val') \
.rename_axis(index=None, columns=None)
print(df)
# Output
A B C D E I PLAN
1 0PDFGB 23FGC 26TGFGD 19TGE 18TGA 113 1
2 0PDFGB 23FGC 26TGFGD 19TGE 18TGA 120 2
3 0PDFGB 23FGC 26TGFGD 19TGE 18TGA 113 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435220.html
下一篇:從兩個嵌套串列制作字典
