bartblons
bartblons

Reputation: 125

Python / Pandas: How to merge rows in dataframe

After merging of two data frames:

output = pd.merge(df1, df2, on='ID', how='outer')

I have data frame like this:

index  x    y   z
  0    2   NaN  3
  0   NaN   3   3
  1    2   NaN  4
  1   NaN   3   4
...

How to merge rows with the same index? Expected output:

index  x   y  z
  0    2   3  3
  1    2   3  4

Upvotes: 1

Views: 2178

Answers (2)

Sevanteri
Sevanteri

Reputation: 4038

We can group the DataFrame by the 'index' and then... we can just get the first values with .first() or minimum with .min() etc. depending on the case of course. What do you want to get if the values in z differ?

In [28]: gr = df.groupby('index', as_index=False)

In [29]: gr.first()
Out[29]:
   index    x    y  z
0      0  2.0  3.0  3
1      1  2.0  3.0  4

In [30]: gr.max()
Out[30]:
   index    x    y  z
0      0  2.0  3.0  3
1      1  2.0  3.0  4

In [31]: gr.min()
Out[31]:
   index    x    y  z
0      0  2.0  3.0  3
1      1  2.0  3.0  4

In [32]: gr.mean()
Out[32]:
   index    x    y  z
0      0  2.0  3.0  3
1      1  2.0  3.0  4

Upvotes: 2

Zero
Zero

Reputation: 76917

Perhaps, you could take mean on them.

In [418]: output.groupby('index', as_index=False).mean()
Out[418]:
   index    x    y  z
0      0  2.0  3.0  3
1      1  2.0  3.0  4

Upvotes: 3

Related Questions