item और date द्वारा समूह कैसे करें, फिर प्रत्येक उप-डेटाफ़्रेम के लिए, वास्तविक पंक्ति प्राप्त करें जहां 'डेटा' मान उप-डेटाफ़्रेम में वास्तविक मध्य मान है?

कभी-कभी ऐसी कई पंक्तियाँ होती हैं जहाँ data मध्य मान के बराबर होती है, इस स्थिति में हम केवल पहली पंक्ति रखते हैं।

डीएफ:

    item   date        data
0   22     2012-03-10  10
1   22     2012-03-10  20
2   22     2012-03-10  40
3   24     2012-03-11  40
4   24     2012-03-11  50
5   24     2012-03-11  50

अपेक्षित उत्पादन:

1   22     2012-03-10  20
4   24     2012-03-11  50
1
nilsinelabore 8 जुलाई 2020, 07:26

4 जवाब

सबसे बढ़िया उत्तर

आप groupby().transform() और फिर बूलियन इंडेक्सिंग का उपयोग कर सकते हैं:

medians = df.groupby(['item','date'])['data'].transform('median')

# drop duplicates in the case 
# there are multiple rows equal to median
df[df['data']==medians].drop_duplicates(['item','date','data'])

आउटपुट:

   item        date  data
1    22  2012-03-10    20
4    24  2012-03-11    50
2
Quang Hoang 8 जुलाई 2020, 07:35

कृपया .groupby(), .agg(median)

 df[['item', 'date', 'data']].groupby(['date', 'item',]).agg('median').reset_index()

        date  item  data
0  2012-03-10    22    20
1  2012-03-11    24    50
1
wwnde 8 जुलाई 2020, 07:30

आप पांडा df['date'] = pd.to_datetime(df['date']).dt.date का उपयोग करके नमूने के रूप में नीचे उपयोग कर सकते हैं

Df1 = df.groupby(['data','date'])['date','data'].median()

Df1

0
Sunil Sharma 8 जुलाई 2020, 07:52

ये कोशिश करें:

df.groupby(['item', 'date'], as_index=False).median()

आउटपुट:

   item        date  data
0    22  2012-03-10    20
1    24  2012-03-11    50
1
Vinod Karantothu 8 जुलाई 2020, 08:23