ฉันมีดาต้าเฟรม df1
pid stat h1 h2 h3 h4 h5 h6 ... h20
1 a 3.2 3.5 6.2 7.1 1.2 2.3 ... 3.2
1 b 3.3 1.5 4.2 7.7 4.2 3.5 ... 8.4
1 a 3.1 3.8 2.2 1.1 6.2 5.3 ... 9.2
1 b 3.7 1.2 8.2 4.7 3.2 8.5 ... 2.4
: : : : : : : : : :
2 a 2.2 3.8 6.2 7.3 1.3 4.3 ... 3.2
2 b 4.3 1.3 4.2 5.7 2.2 3.1 ... 2.4
2 a 2.1 3.7 2.4 1.6 6.4 9.3 ... 9.6
2 b 3.8 1.3 8.7 3.7 7.2 8.3 ... 9.4
: : : : : : : : : :
3 a 2.2 3.8 6.2 7.3 1.3 4.3 ... 3.2
3 b 4.3 1.3 4.2 5.7 2.2 3.1 ... 2.4
3 a 2.1 3.7 2.4 1.6 6.4 9.3 ... 9.6
3 b 3.8 1.3 8.7 3.7 7.2 8.3 ... 9.4
: : : : : : : : : :
ฉันต้องการรับกลุ่มที่มีการจัดทำดัชนีใน pid
และ stat
แล้วลบค่า h
ของ group1 ออกจากค่า h
ของ group2 สำหรับ dataframe
สุดท้าย (df2
) dataframe สุดท้ายนี้จำเป็นต้องได้รับการจัดทำดัชนีใหม่ด้วยตัวเลขที่เริ่มต้นจาก 0:len(groups)
ทำซ้ำซ้ำๆ สำหรับการเรียงสับเปลี่ยนของ pid เช่น 1-2, 1-3, 1-4, 2-1, 2-3 ... ฯลฯ ฉันต้องทำอย่างอื่น การคำนวณบน dataframe สุดท้าย df2
(ค่าใน df2
ด้านล่างไม่ได้ถูกลบออกทุกประการ แต่เป็นเพียงการแสดงแทน)
pid(string) stat h1p1-h1p2 h2p1-h2p2 h3p1-h3p2 h4p1-h4p2 h5p1-h5p2 h6p1-h6p2 ... h20p1-h2p2
1-2 a 3.2 3.5 6.2 7.1 1.2 2.3 ... 3.2
1-2 b 3.3 1.5 4.2 7.7 4.2 3.5 ... 8.4
1-2 a 3.1 3.8 2.2 1.1 6.2 5.3 ... 9.2
1-2 b 3.7 1.2 8.2 4.7 3.2 8.5 ... 2.4
1-3 ....
ฉันดูตัวเลือกของ;
for (pid, stat), group in df1.groupby(['pid', 'stat']):
print('pid = %s Stat = %s' %(pid, stat))
print group
สิ่งนี้ทำให้ฉันมีกลุ่ม แต่ฉันไม่แน่ใจว่าจะเข้าถึง dataframes จากสิ่งนี้ for loop ได้อย่างไรและใช้เพื่อลบออกจากกลุ่มอื่น อีกด้วย
df_grouped = df.groupby(['pid', 'stat']).groups()
ยังไม่แน่ใจว่าจะเข้าถึง dataframe ใหม่ของกลุ่มและดำเนินการอย่างไร ฉันต้องการทราบว่าสามารถทำได้โดยใช้ groupby หรือมีแนวทางที่ดีกว่านี้หรือไม่ ขอบคุณล่วงหน้า!