亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將 Dataframe 轉換為具有某些條件的列表

將 Dataframe 轉換為具有某些條件的列表

喵喵時光機 2023-10-11 15:58:20
我有兩個 DataFrame,df 和 df2,如下圖所示。我想將 df 轉換為如下列表。df2 告訴 df 轉換為列表時要包含哪些列。怎樣才能達到目的呢?非常感謝。desired_output = [{'A': {'value': '10'}, 'B': {'value': '11'}}, {'B': {'value': '14'}, 'C': {'value': '15'}}, {'A': {'value': '16'}, 'B': {'value': '17'}, 'C': {'value': '18'}}]
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

輸入 - 定義數據幀


import pandas as pd

df1 = pd.DataFrame({'A': [10,13,16], 'B': [11,14,17], 'C':[12,15,18]} )

df1.index = ['a_0','a_1','a_2']

df2 = pd.DataFrame({'start_column': [0,1,0], 'end_column': [1,2,2]} )

df2.index = ['a_0','a_1','a_2']

數據框輸入:


      A   B   C

a_0  10  11  12

a_1  13  14  15

a_2  16  17  18

     start_column  end_column

a_0             0           1

a_1             1           2

a_2             0           2

解決方案:


def listofdict(j):

    d2 = {}

    x = j['start_column']

    y = j['end_column']+1

    for i in range(x,y):

        d1 = {}

        d1['value'] = str(df1.loc[j.name][i])

        d2[df1.columns[i]] = d1

    l.append(d2)

    return l


l = []

df2.apply(lambda j:listofdict(j), axis=1).all()

print(l)

期望的輸出:


[{'A': {'value': '10'}, 'B': {'value': '11'}}, {'B': {'value': '14'}, 'C': {'value': '15'}}, {'A': {'value': '16'}, 'B': {'value': '17'}, 'C': {'value': '18'}}]



查看完整回答
反對 回復 2023-10-11
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號