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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從分組列中另一個 DataFrame 的每一行創(chuàng)建 DataFrame?

從分組列中另一個 DataFrame 的每一行創(chuàng)建 DataFrame?

至尊寶的傳說 2022-06-22 17:21:11
目標:將 DataFrame A 的每一行轉換為新的 Dataframe B。這個新的 Dataframe B 應該在每一行中包含一組來自 A 的列。如果有 6 個組,每個 B 中應該有 6 行。問題:我設法做到了上述事情,我只是想知道是否有更蟒蛇的方式來做到這一點?我已經(jīng)嘗試過盡可能簡化,但我仍然覺得有一個更簡單的解決方案。這是我的方法:import pandas as pdimport numpy as npA = pd.DataFrame(np.random.rand(100,3), columns=['A_1','B_1','B_2'])slices = [['A_1','A_2'],['B_1','B_2']]def create_timeseries(data, slices):    sliced_cols = [list(data.columns[data.columns.isin(i)]) for i in slices]    len_slices = [0] + [len(sliced_cols[i]) for i in range(len(sliced_cols))]    len_slices = np.cumsum(len_slices)     final_sliced_data = []    for i, rows in enumerate(data.iterrows()):        mat = np.zeros((len(sliced_cols), len_slices[-1]))        for j, slices in enumerate(sliced_cols):            mat[j, len_slices[j]:len_slices[j+1]] = rows[1].loc[slices]        final_sliced_data.append(pd.DataFrame(mat, columns=sum(sliced_cols, [])))    return final_sliced_dataB = create_timeseries(A, slices)# have a look at first tranformed rowB[0]例子:輸入(100 次觀察):A:         A_1       B_1       B_20   0.574628  0.521426  0.1618651   0.137718  0.237061  0.1248902   0.753827  0.032432  0.7855843   0.611985  0.606326  0.5854084   0.676480  0.543213  0.055162..       ...       ...       ...95  0.383652  0.189211  0.22311096  0.063715  0.312059  0.23320697  0.886396  0.072423  0.10880998  0.853179  0.314846  0.90700699  0.302820  0.402470  0.152462[100 rows x 3 columns]輸出(前 2 次觀察):B[0]:        A_1       B_1       B_20  0.574628  0.000000  0.0000001  0.000000  0.521426  0.161865B[1]:        A_1       B_1      B_20  0.137718  0.000000  0.000001  0.000000  0.237061  0.12489
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

嘗試這個:

B = A.apply(lambda x: pd.DataFrame([[x.A_1,0,0],[0, x.B_1, x.B_2]], columns=A.columns), axis=1).tolist()



查看完整回答
反對 回復 2022-06-22
?
犯罪嫌疑人X

TA貢獻2080條經(jīng)驗 獲得超4個贊

替代解決方案:


B = pd.DataFrame(data=np.repeat(A.values, 2, axis=0), columns=A.columns)

B.loc[1::2, 'A_1'] = 0

B.loc[::2 ,['B_1', 'B_2']] = 0

B = [B.iloc[i:i+2, :] for i in range(0, len(B), 2)]


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號