How To Re Order A Pandas Dataframe Based On A Dictionary Condition
I have a df like this, case step deep value 0 case 1 1 ram in India ram,cricket 1 NaN 2 ram plays cricket
Solution 1:
You can create MultiIndex
for sorting, only is necessary values from column value
are in my_dict
:
my_dict = {'ram':1,'cricket':1,'ravi':2.5,'sri':1}
#create DataFrame from value column, replace and sum columns
a = df['value'].str.split(',', expand=True).replace(my_dict).sum(axis=1)
#create groups
b = df['step'].diff().le(0).cumsum()
#create Series by summing per groups
c = a.groupby(b).transform('sum')
#create MultiIndex
df.index = [c,b]
print (df)
case step deep value
step
2.0 0 case 1 1 ram in India ram,cricket
0 NaN 2 ram plays cricket NaN
2.5 1 case 2 1 ravi played football ravi
1 NaN 2 ravi works welll NaN
1.0 2 case 3 1 Sri bought a car sri
2 NaN 2 sri went out NaN
#sorting MultiIndex and removing
df = df.sort_index(ascending=False).reset_index(drop=True)
print (df)
case step deep value
0 case 2 1 ravi played football ravi
1 NaN 2 ravi works welll NaN
2 case 1 1 ram in India ram,cricket
3 NaN 2 ram plays cricket NaN
4 case 3 1 Sri bought a car sri
5 NaN 2 sri went out NaN
Post a Comment for "How To Re Order A Pandas Dataframe Based On A Dictionary Condition"