【问题标题】:how can i achieve the below output (python)我怎样才能实现以下输出(python)
【发布时间】:2020-05-03 14:37:35
【问题描述】:

您能帮我重新整理一下数据吗:

输入 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

【问题讨论】:

  • 到目前为止你有什么尝试?

标签: python data-manipulation


【解决方案1】:
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_codestore_name 在这种情况下是 multi index DataFrame 的

【讨论】:

    【解决方案2】:

    df.unique 和转置

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

    【讨论】:

      【解决方案3】:
      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()))
      

      【讨论】:

        猜你喜欢
        • 2022-08-11
        • 2017-02-03
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        • 2021-10-01
        • 2020-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多