Python Pandas groupby,行值到列标题

时间:2017-12-29 09:10:04

标签: python pandas dictionary transpose

我有一个想要转置的DataFrame: enter image description here

import pandas as pd

sid= '13HKQ0Ue1_YCP-pKUxFuqdiqgmW_AZeR7P3VsUwrCnZo' # spreadsheet id
gid = 0 # sheet unique id (0 equals sheet0)
url = 'https://docs.google.com/spreadsheets/d/{}/export?gid={}&format=csv'.format(sid,gid)

df = pd.read_csv(url)

我想要做的是将StoreName和CATegory作为列标题,并为每个类别设置权重与价格。

期望的输出: enter image description here

我已经尝试过循环,熊猫,但无法弄明白,

我认为它可以由df.GroupBy完成,但返回的对象不是DataFrame。

我从API的JSON输出中得到了所有这些:

API Link for 1STORE

import pandas as pd
import json, requests
from cytoolz.dicttoolz import merge
page = requests.get(mainurl)

dict_dta = json.loads(page.text) # load in Python DICT

list_columns = ['id', 'name', 'category_name', 'ounce', 'gram', 'two_grams', 'quarter', 'eighth','half_ounce','unit','half_gram'] # get the unformatted output

df = pd.io.json.json_normalize(dict_dta, ['categories', ['items']]).pipe(lambda x: x.drop('prices', 1).join(x.prices.apply(lambda y: pd.Series(merge(y)))))[list_columns]
df.to_csv('name')

我尝试了很多方法。 如果有人能指出我正确的方向,那将非常有帮助。

1 个答案:

答案 0 :(得分:1)

这是正确的方向吗?

import pandas as pd

sid= '13HKQ0Ue1_YCP-pKUxFuqdiqgmW_AZeR7P3VsUwrCnZo' # spreadsheet id
gid = 0 # sheet unique id (0 equals sheet0)
url = 'https://docs.google.com/spreadsheets/d/{}/export?gid={}&format=csv'.format(sid,gid)

df = pd.read_csv(url)

for idx, dfx in df.groupby(df.CAT):
    if idx != 'Flower':
        continue
    df_test = dfx.drop(['CAT','NAME'], axis=1)
    df_test = df_test.rename(columns={'StoreNAME':idx}).set_index(idx).T

df_test

返回:

Flower     Pueblo West Organics - Adult Use  Pueblo West Organics - Adult Use  \
UNIT                                    NaN                               NaN   
HALFOUNCE                              15.0                              50.0   
EIGHTH                                  NaN                              25.0   
TWOGRAMS                                NaN                               NaN   
QUARTER                                 NaN                              40.0   
OUNCE                                  30.0                              69.0   
GRAM                                    NaN                               9.0   

Flower     Pueblo West Organics - Adult Use  Three Rivers Dispensary - REC  \
UNIT                                    NaN                            NaN   
HALFOUNCE                              50.0                           75.0   
EIGHTH                                 25.0                           20.0   
TWOGRAMS                                NaN                            NaN   
QUARTER                                40.0                           45.0   
OUNCE                                  69.0                          125.0   
GRAM                                    9.0                            8.0   

Flower     Three Rivers Dispensary - REC  
UNIT                                 NaN  
HALFOUNCE                           75.0  
EIGHTH                              20.0  
TWOGRAMS                             NaN  
QUARTER                             40.0  
OUNCE                              125.0  
GRAM                                 8.0