第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Pandas 將重復(fù)的列轉(zhuǎn)換為行

Pandas 將重復(fù)的列轉(zhuǎn)換為行

HUWWW 2023-10-31 19:23:58
我有一個(gè)像這樣的數(shù)據(jù)框,其中包含重復(fù)的列名:ID 作為索引加載          JANUARY         FEBRUARY        MARCH   ID    Sales   Revenue Sales   Revenue Sales   Revenue  03    10.00   5.00    0.00    0.00    10.00   19.00  05    20.00   20.00   20.00   20.00   20.00   20.00  06    30.00   30.00   30.00   30.00   30.00   30.00  07    30.00   30.00   30.00   30.00   30.00   30.00我想將其顯示如下:  ID    Sales   Revenue  03    10.00   5.00  05    20.00   20.00  06    30.00   30.00  07    30.00   30.00  03    0.00    0.00  05    20.00   20.00  06    30.00   30.00  07    30.00   30.00  03    10.00   19.00  05    20.00   20.00  06    30.00   30.00  07    30.00   30.00目前我正在使用,但期待更好的方法。我嘗試過熔化,但這僅適用于一列:cols = df.columns.to_list()for i in range(1, len(cols), 2):  # #Loading each month's data to the data frame    sub_cols = cols[i:i + 2]    sub_cols .insert(0, cols[0])    sub_df = df.filter(sub_cols , axis=1)    sub_df.columns = ['ID', 'Revenue', 'Sales']    if i == 1:        final_df = sub_df    else:        final_df = final_df.append(sub_df)
查看完整描述

2 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

Pandas lreshape 幫我解決了這個(gè)問題。


df = pd.lreshape(df, 

{'Sales': file_df.columns[file_df.columns.str.match(r'^Sales\.?\d?')],

'Revenue': file_df.columns[file_df.columns.str.match(r'^Revenue\.?\d?')]})


查看完整回答
反對(duì) 回復(fù) 2023-10-31
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

這是堆疊列的另一種方法。不確定它是否更有效,但它需要更少的代碼。


#        JANUARY         FEBRUARY        MARCH 

#  ID    Sales   Revenue Sales   Revenue Sales   Revenue

#  03    10.00   5.00    0.00    0.00    10.00   19.00

#  05    20.00   20.00   20.00   20.00   20.00   20.00

#  06    30.00   30.00   30.00   30.00   30.00   30.00

#  07    30.00   30.00   30.00   30.00   30.00   30.00


import pandas as pd

dd = {

'ID':['03','05','06','07'],

'Sales1':[10,20,30,30],

'Rev1':[5,20,30,30],

'Sales2':[0,20,30,30],

'Rev2':[0,20,30,30],

'Sales3':[10,20,30,30],

'Rev3':[19,20,30,30]

}


df = pd.DataFrame(dd)

print(df.to_string(index=False),'\n') # source dataframe


####################


dfnew = pd.DataFrame(columns = ['ID', 'Sales', 'Revenue'])  # new dataframe with all data

for c in range(1,len(df.columns),2):

   dftmp = df[['ID',df.columns[c],df.columns[c+1]]] # create df for each month

   dftmp.columns = ['ID', 'Sales', 'Revenue'] # must rename columns for append

   dfnew = dfnew.append(dftmp)  # append to stacked df


print(dfnew.to_string(index=False))

輸出


 ID  Sales1  Rev1  Sales2  Rev2  Sales3  Rev3

 03      10     5       0     0      10    19

 05      20    20      20    20      20    20

 06      30    30      30    30      30    30

 07      30    30      30    30      30    30


 ID Sales Revenue

 03    10       5

 05    20      20

 06    30      30

 07    30      30

 03     0       0

 05    20      20

 06    30      30

 07    30      30

 03    10      19

 05    20      20

 06    30      30

 07    30      30



查看完整回答
反對(duì) 回復(fù) 2023-10-31
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)