首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Dataframe转换为具有某些条件的列表

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

Stack Overflow用户
提问于 2020-10-06 05:41:25
回答 1查看 75关注 0票数 1

我有两个DataFrames,df和df2如下图所示。我想将df转换为如下列表。df2告诉在将df转换为列表时要包括哪些列。怎样才能达到目标呢?在进阶阶段非常感谢。

代码语言:javascript
运行
复制
desired_output = [{'A': {'value': '10'}, 'B': {'value': '11'}}, {'B': {'value': '14'}, 'C': {'value': '15'}}, {'A': {'value': '16'}, 'B': {'value': '17'}, 'C': {'value': '18'}}]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 08:48:59

输入定义数据范围

代码语言:javascript
运行
复制
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']

数据帧输入:

代码语言:javascript
运行
复制
      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

解决方案:

代码语言:javascript
运行
复制
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)

所需输出:

代码语言:javascript
运行
复制
[{'A': {'value': '10'}, 'B': {'value': '11'}}, {'B': {'value': '14'}, 'C': {'value': '15'}}, {'A': {'value': '16'}, 'B': {'value': '17'}, 'C': {'value': '18'}}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64216576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档