将 Dataframe 转换为具有某些条件的列表

我有两个 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'}}]

https://img1.sycdn.imooc.com/652655db0001b02106530125.jpg


喵喵时光机
浏览 79回答 1
1回答

喵喔喔

输入 - 定义数据帧import pandas as pddf1 = 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   Ca_0  10  11  12a_1  13  14  15a_2  16  17  18     start_column  end_columna_0             0           1a_1             1           2a_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 ll = []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'}}]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python