考慮:
>>> from io import StringIO
>>> infile = """Japan Cases:CS_1 People:CS_2 Life:CS_3
... Australia People:CS_4 Transportation:CS_Ground
... Spain Life:CS_5 Language:CS_Spanish"""
迭代通過文件一行一行地:
- 分區從靜止
- 拆分其餘部分與適當的定界符的第一列(例如
\s
或\t
)
- 分割的每個元素到其中的鍵是你在最後的數據幀所需的列標題鍵值對
- 添加的第一列的值(即國名),並使用一個臨時的頭名(例如,
Key
)
- 存儲字典中的列表
[代碼]:
>>> row_dicts = []
>>> for line in StringIO(infile):
... k, _, therest =line.partition(' ') # Step 1.
... _row = {kv.split(':')[0]:kv.split(':')[1] for kv in therest.split()} # Step 2-3.
... _row['Key'] = k # Step 4.
... row_dicts.append(_row) # Step 5.
...
角色的列表字典成pd.DataFrame
:
>>> pd.DataFrame(row_dicts)
Cases Key Language Life People Transportation
0 CS_1 Japan NaN CS_3 CS_2 NaN
1 NaN Australia NaN NaN CS_4 CS_Ground
2 NaN Spain CS_Spanish CS_5 NaN NaN
使用.set_index
設置國家Key
列索引。
>>> df.set_index('Key')
Cases Language Life People Transportation
Key
Japan CS_1 NaN CS_3 CS_2 NaN
Australia NaN NaN NaN CS_4 CS_Ground
Spain NaN CS_Spanish CS_5 NaN NaN
你有什麼到目前爲止已經試過? – asongtoruin
一種方法是將文本文件讀入嵌套字典中,並將國家作爲外鍵:'''''':{'Cases':'CS_1','人物':CS_2','生活':'CS_3 '},'澳大利亞':{...},'西班牙':{...}}'然後迭代字典以獲得所有列名稱。然後創建你的數據框。 – DaveL17
當然我使用Python,因爲我有一個龐大的數據文件,否則您的解決方案將是一段路要走。我有成千上萬的行和超過10個不同的列 – gusa10