從資料類串列
from dataclasses import dataclass
@dataclass
class Row:
name: str
age: int
hobbies: pd.DataFrame
charles_hobbies = pd.DataFrame({'activities': ['video_game'], 'sports': ['tennis']})
dash_hobbies = pd.DataFrame({'activities': ['eat'], 'sports': ['soccer']})
rows = []
rows.append(Row(name='Charles', age=24, hobbies=charles_hobbies))
rows.append(Row(name='Dash', age=18, hobbies=dash_hobbies))
print(pd.DataFrame(rows))
name age hobbies
0 Charles 24 activities sports 0 video_game tennis
1 Dash 18 activities sports 0 eat soccer
所需的輸出(不必具有-)。
out = pd.DataFrame([['Charles', 24, 'video_game', 'tennis'], ['Dash', 18, 'eat', 'soccer']])
out.columns = [['name', 'age', 'hobbies', 'hobbies'], ['-', '-', 'activity', 'sport']]
print(out)
name age hobbies
- - activity sport
0 Charles 24 video_game tennis
1 Dash 18 eat soccer
每個嵌套資料幀中只有 1 行,因此在技術上可以擴展嵌套資料幀的列是資料幀的列,而無需做一些更復雜的事情,但是,我想不出一個巧妙的方法來做到這一點而不是通過將愛好資料幀與另一個包含name和的資料幀連接起來來分解資料類并重建資料幀age。
uj5u.com熱心網友回復:
我認為拆包是你最好的選擇:
# gather all the data
out = pd.DataFrame([{'name': r.name, 'age':r.age, **r.hobbies.iloc[0]} for r in rows])
# rename columns
out.columns = pd.MultiIndex.from_tuples([(x, '-') for x in out.columns[:2]]
[('hobbies',x) for x in out.columns[2:]]
)
輸出:
name age hobbies
- - activities sports
0 Charles 24 video_game tennis
1 Dash 18 eat soccer
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345074.html
