Reputation: 507
How do I merge multiple rows into one row , where duplicated values into one row and unique values list inside multiple columns
The input dataframe is as follows
Name num1 num2 key filter1 filter2
TOM 1.1 2.1 a T F
TOM 1.1 2.1 b T F
TOM 1.1 2.1 c T F
TOM 1.1 2.1 d T F
SAM 1.2 2.1 a F T
SAM 1.2 2.1 b F T
This is the code I have written, But it dont solve the issue. Help me write a simple code to get the final dataframe
df_temp = df.groupby(['Name','num1','num2'])['key'].apply(list).reset_index()
df_temp_2 = df.groupby(['Name','num1','num2'])['filter1'].apply(list).reset_index()
df_temp_3 = df.groupby(['Name','num1','num2'])['filter2'].apply(list).reset_index()
df1 = df_temp.merge(df_temp2)
final_df = df1.merge(df_temp3)
Output
Name num1 num2 key filter1 filter2
TOM 1.1 2.1 [a, b, c, d] [T, T, T, T] [F, F, F, F]
SAM 1.2 2.1 [a, b] [F, F] [T, T]
Upvotes: 0
Views: 35
Reputation: 323236
IIUC
df = df.groupby(['Name', 'num1', 'num2'], as_index=False, sort=False).agg(list)
Name num1 num2 key filter1 filter2
0 TOM 1.1 2.1 [a, b, c, d] [T, T, T, T] [F, F, F, F]
1 SAM 1.2 2.1 [a, b] [F, F] [T, T]
Upvotes: 4