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

发布于 2020-10-06 08:48:59
输入定义数据范围
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'}}]https://stackoverflow.com/questions/64216576
复制相似问题