Reputation: 3146
I have a simple data frame like this:
d1={'a':{'1998-01-01':10}}
d2={'b':{'1998-01-01':3}}
df=pd.DataFrame.from_dict(d1)
df=df.append(pd.DataFrame.from_dict(d2))
df.index=pd.to_datetime(df.index)
a b
1998-01-01 10 NaN
1998-01-01 NaN 3
I would like to have
a b
1998-01-01 10 3
Since 1998-01-01 share the index
Upvotes: 11
Views: 16191
Reputation: 862441
Or you can use groupby
by index
different way - with parameter level=0
with sum
:
print (df.groupby(level=0).sum())
a b
1998-01-01 10 3
If need avoid that an all nan group (by index) gets transformed to zero add min_count=1
, thanks @LukasS:
print (df.groupby(level=0, min_count=1).sum())
Upvotes: 15
Reputation: 210822
Alternatively you can try this (with your original data frame):
print(df)
print(df.groupby(df.index).sum())
Output:
a b
1998-01-01 10 NaN
1998-01-01 NaN 3
a b
1998-01-01 10 3
Upvotes: 5