Как переместить заголовок в столбец в кадре данных Pandas - PullRequest
0 голосов
/ 05 августа 2020

У меня есть pandas фрейм данных, который выглядит следующим образом

                                    SKU          UK  ...          IT          ES
0  CAN~CT0264~FemaleHoseAdaptorYellowMF  Dispose UK  ...  dispose IT  Dispose ES
1              CAN~CT0970~AirBottleJack  Dispose UK  ...  dispose IT  Dispose ES
2        CAN~CT2742~M8X1_25X10_8MM_25PC  Dispose UK  ...  dispose IT  Dispose ES
3     CAN~CT2934~PressAndPullBearingSet  Dispose UK  ...  dispose IT  Dispose ES
4     CAN~CT3201~LongRatchet12in20inDap         NaN  ...         NaN         NaN
5              CAN~CT3684~3pcSealPuller  Dispose UK  ...  dispose IT  Dispose ES
6              CAN-CT0615-9pcLongHexKey  Dispose UK  ...  dispose IT  Dispose ES
7              CAN-CT0786-CircuitTester  Dispose UK  ...  dispose IT  Dispose ES
8          CAN-CT2772-8inTrimHoseCutter         NaN  ...  dispose IT  Dispose ES
9    CAN-CT2945-SpeedBrakePadCompressor  Dispose UK  ...  dispose IT  Dispose ES

Я хочу поместить это в таблицу с заголовками SKU, Market (т.е. UK, DE, FR et c) и Правило (например, Dispose UK, NaN, Dispose IT).

Я пробовал stack и pivot безрезультатно, но подозреваю, что я чего-то не хватает. Может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 05 августа 2020

Как насчет этого? Я попробовал это на образце данных, и, похоже, он сработал.

import pandas as pd

# Build the dataframe
df = pd.DataFrame([
    ["CAN~CT0264~FemaleHoseAdaptorYellowMF", "Dispose UK", "dispose IT", "Dispose ES"],
    ["CAN~CT0970~AirBottleJack", "Dispose UK", "dispose IT", "Dispose ES"],
    ["CAN~CT2742~M8X1_25X10_8MM_25PC" ,"Dispose UK", "dispose IT", "Dispose ES"]], 
        columns = ["SKU","UK","IT","ES"])

# remove name of Market from respective column
for col in ['UK', 'IT', 'ES']:
  df[col] = df[col].str.replace(col, '')

# The meat of it which sets index, does the stack, resets index, and renames columns to what you want
df = df.set_index('SKU').stack().reset_index().rename(columns={'level_1':'Market', 0:'Rule'})
print(df)
                                    SKU Market      Rule
0  CAN~CT0264~FemaleHoseAdaptorYellowMF     UK  Dispose 
1  CAN~CT0264~FemaleHoseAdaptorYellowMF     IT  dispose 
2  CAN~CT0264~FemaleHoseAdaptorYellowMF     ES  Dispose 
3              CAN~CT0970~AirBottleJack     UK  Dispose 
4              CAN~CT0970~AirBottleJack     IT  dispose 
5              CAN~CT0970~AirBottleJack     ES  Dispose 
6        CAN~CT2742~M8X1_25X10_8MM_25PC     UK  Dispose 
7        CAN~CT2742~M8X1_25X10_8MM_25PC     IT  dispose 
8        CAN~CT2742~M8X1_25X10_8MM_25PC     ES  Dispose 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...