【发布时间】:2019-07-22 11:12:05
【问题描述】:
我有两个数据框,数据框A 中的每一行都有一个与数据框B 中的条目相对应的索引列表和一组其他值。我想以某种方式连接两个数据帧,以便B 中的每个条目在A 中具有其他值,其中B 中的条目索引位于@987654327 中条目的索引列表中@。
到目前为止,我已经找到了一种方法来提取 B 中的行,以获取 A 中每行中的索引列表,但只能从 this answer 中逐行提取,但我不确定在哪里从这里走?也不确定是否有更好的方法来动态处理 Pandas,因为索引列表的大小可能会发生变化。
import pandas as pd
import numpy as np
# Inputs
A = pd.DataFrame.from_dict({
"indices": [[0,1],[2,3],[4,5]],
"a1": ["a","b","c"],
"a2": [100,200,300]
})
print(A)
>> indices a1 a2
>> 0 [0, 1] a 100
>> 1 [2, 3] b 200
>> 2 [4, 5] c 300
B = pd.DataFrame.from_dict({
"b": [10,20,30,40,50,60]
})
print(B)
>> b
>> 0 10
>> 1 20
>> 2 30
>> 3 40
>> 4 50
>> 5 60
# This is the desired output
out = pd.DataFrame.from_dict({
"b": [10,20,30,40,50,60],
"a1": ["a","a", "b", "b", "c", "c"],
"a2": [100,100,200,200,300,300]
})
print(out)
>> b a1 a2
>> 0 10 a 100
>> 1 20 a 100
>> 2 30 b 200
>> 3 40 b 200
>> 4 50 c 300
>> 5 60 c 300
【问题讨论】: