从另一个数据帧引用Pandas数据帧

时间:2017-10-18 19:40:40

标签: python python-3.x pandas

如何从另一个引用pandas数据框。

import pandas as pd

f1 = [['a',5,7],['b',7,9],['c',9,11],['d',11,13],['e',13,15],['f',15,17]]
df1 = pd.DataFrame(data=f1,columns=[1,2,3])
f2 = [['a','c','f'],['b','d',None]]
df2 = pd.DataFrame(data=f2, columns=[1,2,3])
print(df1)
print(df2)

我希望输出是另一个列出df1到df2值的数据帧。 输出应为

[
[[5,7],[9,11],[13,15]]
[[7,9],[11,13],[]]
]

1 个答案:

答案 0 :(得分:0)

将第一个df1设为dict

df2.apply(lambda x : x.map(df1.set_index(1).T.to_dict('l'))).values.tolist()
Out[147]: [[[5, 7], [9, 11], [15, 17]], [[7, 9], [11, 13], nan]]

如果你想要一个数据框

d=df2.apply(lambda x : x.map(df1.set_index(1).T.to_dict('l')))
d
Out[164]: 
        1         2         3
0  [5, 7]   [9, 11]  [15, 17]
1  [7, 9]  [11, 13]       NaN

再将NaN替换为[]

d.loc[d[3].isnull(),3] = d.loc[d[3].isnull(),3].apply(lambda x: [])
d
Out[184]: 
        1         2         3
0  [5, 7]   [9, 11]  [15, 17]
1  [7, 9]  [11, 13]        []
相关问题