कैसे कर सकते हैं मैं जोड़ने के लिए एक पंक्ति में उप-योग के लिए एक बहु सूचकांक dataframe?

0

सवाल

और यह अच्छा लग रहा है भी है.

यहाँ मेरे वर्तमान डेटा फ्रेम:

Attribute 1     Attribute 2   Attribute 3       Value
A               B             D                 10
                              E                 11
                C             F                 12

H               B             D                 10
                              E                 11
                C             F                 12
                              G                 15

कुछ इस तरह.

मैं योग डेटा फ्रेम का उपयोग कर इस कोड के बारे में:

df_sum = df.groupby('Attribute 1').sum()

का पालन के रूप में:

Attribute 1   Value
A             33
H             48

यहाँ अपने वांछित आउटपुट दो के संयोजन:

Attribute 1     Attribute 2   Attribute 3       Value
A               B             D                 10
                              E                 11
                C             F                 12

Subtotal for A                                  33

H               B             D                 10
                              E                 11
                C             F                 12
                              G                 15
Subtotal for H                                  48

है इस तरह से कुछ का उपयोग संभव ही पंडों? धन्यवाद.

pandas python
2021-11-24 03:40:02
2

सबसे अच्छा जवाब

1

बनाए रखने के लिए मूल छँटाई मैं इसे हल होगा एक पाश का उपयोग कर groupby

import pandas as pd

df = pd.DataFrame({
    'Attribute1': ['A', 'A', 'A', 'H', 'H', 'H', 'H'],
    'Attribute2': ['B', 'B', 'C', 'B', 'B', 'C', 'C'],
    'Attribute3': ['D', 'E', 'F', 'D', 'E', 'F', 'G'],
    'Value': [10, 11, 12, 10, 11, 12, 15]
})
df = df.groupby(['Attribute1', 'Attribute2', 'Attribute3']).sum()

df_out = []  # init output list
for index, df_sub in df.groupby(level=0):  # loop groupby level 0
    df_sub = df.groupby('Attribute1').sum().reset_index()  # get subtotal and reset index
    df_sub['Attribute1'] = df_sub['Attribute1'].replace({index: f"{index}_subtotal"})  # rename index value to include subtotal
    df_sub['Attribute2'] = ''  # dummy value for Attribute 2
    df_sub['Attribute3'] = ''  # dummy value for Attribute 3
    df_sub = df_sub.groupby(['Attribute1', 'Attribute2', 'Attribute3']).sum()  # match groupby structure so we can use append
    df_out.append(df.loc[index:index].append(df_sub))  # select current index value and append subtotal
df_out = pd.concat(df_out)  # merge list to DataFrame

यह आप वांछित उत्पादन

enter image description here

2021-11-24 04:03:23
0

यहाँ एक तरीका है, आप करने के लिए है हो सकता है के साथ रणनीतिक मूल्यों के कारण वर्णमाला छँटाई:

df_sum=df.groupby('Attribute 1').sum()

df_sum['Attribute 2'] = 'Sub'
df_sum['Attribute 3'] = 'Total'

df_sum = df_sum.set_index(['Attribute 2', 'Attribute 3'], append=True)
pd.concat([df, df_sum]).sort_index()

आउटपुट:

                                     Value
Attribute 1 Attribute 2 Attribute 3       

    A           B           D               10
                            E               11
                C           F               12
                Sub         Total           33
    H           B           D               10
                            E               11
                C           F               12
                            G               15
                Sub         Total           48
2021-11-24 03:53:43

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में