Как я могу достичь нижеприведенного вывода (python) - PullRequest
1 голос
/ 03 мая 2020

Не могли бы вы помочь мне изменить форму данных, как показано ниже:

вход DF

import pandas as pd
df=pd.DataFrame({'1': [14561,'X store','Sales Quantity',1],
                   '2': [14561,'X store','Net Sales',2],
                   '3': [16534,'Y store','Sales Quantity',2],
                   '4': [16534,'Y store','Net Sales',1]})

Я хотел бы добиться ниже оп

store_code  store_name  sales_total    net_sales_total
14561       X store           1                     2
16534       Y store           2                     1

Ответы [ 3 ]

1 голос
/ 03 мая 2020
import numpy as np

df = df.transpose()
df.columns = ['store_code', 'store_name', 'sales', 'value']
df = df.pivot_table(index=['store_code','store_name'], 
               columns = 'sales', 
               values='value', 
               aggfunc = np.sum)

df.columns = ['net_sales_total', 'sales_total']

Выход

                         net_sales_total    sales_total
store_code  store_name      
14561       X store          2                  1
16534       Y store          1                  2

Просто обратите внимание, что store_code и store_name в этом случае multi index DataFrame's

0 голосов
/ 03 мая 2020
df = df.transpose()
print('store_code' + str(df[0].unique()))
print('store_name' + str(df[1].unique()))
print('sales_total' + str(df[2].unique()))
print('net_sales_total' + str(df[3].unique()))
0 голосов
/ 03 мая 2020

df.unique и transpose

df=df.transpose()
for i in df.columns:
    print(df[i].unique())
...