Tôi có khung dữ liệu gấu trúc với biến danh mục và một số biến số. Một cái gì đó như thế này:Làm cách nào để chuyển đổi các dòng dữ liệu pandas thành các cột, dựa trên danh mục?
ls = [{'count':5, 'module':'payroll', 'id':2}, {'count': 53, 'module': 'general','id':2}, {'id': 5,'count': 35, 'module': 'tax'}, ]
df = pd.DataFrame.from_dict(ls)
Các df trông như thế này:
df
Out[15]:
count id module
0 5 2 payroll
1 53 2 general
2 35 5 tax
Tôi muốn chuyển đổi (transpose là từ đúng không?) Các biến mô-đun vào cột và nhóm của id. Vì vậy, một cái gì đó như:
general_count id payroll_count tax_count
0 53.0 2 5.0 NaN
1 NaN 5 NaN 35.0
Một cách tiếp cận này sẽ được sử dụng áp dụng:
df['payroll_count'] = df.id.apply(lambda x: df[df.id==x][df.module=='payroll'])
Tuy nhiên, điều này phải chịu đựng từ nhiều nhược điểm:
đắt, và phải mất quá nhiều thời gian
Tạo hiện vật và trống các khung dữ liệu t mũ cần phải được làm sạch.
Tôi cảm thấy có cách tốt hơn để đạt được điều này với pandas groupby, nhưng không thể tìm được cách thức để hoạt động tương tự này hiệu quả hơn. Hãy giúp tôi.
Trong đầu ra mong muốn của bạn , 'id' trong hàng đầu tiên phải là 2, phải không? – IanS
Đúng. cố định nó .. Cảm ơn đã chỉ ra .. @ jezrael đã đưa ra một câu trả lời tốt đẹp quá. –