मेरे पास एक डेटाफ्रेम है जिसे आईडी द्वारा समूहीकृत किया गया है। कई समूह हैं, और प्रत्येक समूह में पंक्तियों की एक चर संख्या है। सभी समूहों की पहली तीन पंक्तियों में दिलचस्प डेटा नहीं है। मैं निम्नलिखित समूह में एक पंक्ति बनाने के लिए प्रत्येक समूह में पहली तीन पंक्तियों को "पतन" करना चाहता हूं:पांडा: समेकन द्वारा प्रत्येक समूह में पहली पंक्तियों को संकुचित करें
'आईडी', और 'टाइप' नई 'ध्वस्त' पंक्ति में समान रहेगा।
'grp_idx' में बदल दिया जाएगा "0" जब पहली तीन पंक्तियों का एकत्रीकरण होता
col_1 प्रथम तीन पंक्तियां का योग होगा
col_2 प्रथम तीन पंक्तियां
'ध्वज' का योग होगा "ध्वस्त" पंक्ति में 0 होगा यदि मूल्य पहले 3 पंक्तियों में सभी 0 हैं। 'ध्वज' 1 होगा यदि यह पहली तीन पंक्तियों में से किसी एक में है। (एक सरल योग इस तर्क के लिए पर्याप्त होगा, के बाद से झंडा केवल सभी समूहों के लिए एक पंक्ति में सेट किया गया है)
यहाँ dataframe कैसा दिखाई देता है की एक उदाहरण है:
import pandas as pd
import numpy as np
df = pd.DataFrame.from_items([
('id', [283,283,283,283,283,283,283,756,756,756]),
('type', ['A','A','A','A','A','A','A','X','X','X']),
('grp_idx', [1,2,3,4,5,6,7,1,2,3]),
('col_1', [2,4,6,8,10,12,14,5,10,15]),
('col_2', [3,6,9,12,15,18,21,1,2,3]),
('flag', [0,0,0,0,0,0,1,0,0,1]),
]);
print(df)
id type grp_idx col_1 col_2 flag
0 283 A 1 2 3 0
1 283 A 2 4 6 0
2 283 A 3 6 9 0
3 283 A 4 8 12 0
4 283 A 5 10 15 0
5 283 A 6 12 18 0
6 283 A 7 14 21 1
7 756 X 1 5 1 0
8 756 X 2 10 2 0
9 756 X 3 15 3 1
प्रसंस्करण के बाद, मैं उम्मीद dataframe देखने के लिए की तरह:
ID Type grp_idx col_1 col_2 flag
283 A 0 12 18 0
283 A 4 8 12 0
283 A 5 10 15 0
283 A 6 12 18 0
283 A 7 14 21 1
756 X 0 30 6 1
मुझे यकीन है कि आगे बढ़ने के लिए कैसे नहीं हूँ। मैं के साथ
df.groupby ('आईडी') के चारों ओर खेलने के लिए कोशिश कर रहा था। सिर (3) .sum()
लेकिन यह नहीं कर रहा है कि मैं क्या जरूरत है। किसी भी मदद, सुझाव, कोड स्निपेट वास्तव में सराहना की जाएगी।
बहुत बढ़िया !! मैं इसे अपने आप कभी नहीं समझता। मदद करने के लिए समय निकालने के लिए धन्यवाद। – Learner
आपका स्वागत है। यह एक अच्छा अभ्यास था। – ayhan