【发布时间】:2019-05-09 03:45:14
【问题描述】:
我正在尝试创建一个 pandas 数据框列(在 df1 中),其中每个元素都是另一个数据框 (df2) 中与 df1 中现有列匹配的所有值的列表。这与 pandas 左合并不同,因为每次 df1 值在 df2 中重复时,该函数都会创建新行。
我的代码完全符合我的需要,但它非常慢(在我的大型数据帧上),我几乎可以肯定有一个内置的 pandas 方法可以做我正在寻找的事情,但我没有没能找到。
这是我当前代码的简化版本。
import pandas as pd
df1=pd.DataFrame({'col4': [1,2,3,4,5,6]})
df2=pd.DataFrame({'col2':['a','b','c','d','e','f','g'],'col3':[1,1,2,3,4,4,6]})
df1['col1']=pd.Series(list(df2['col2'][df2['col3']==df1['col4'][i]]) for i in df1.index)
有没有办法使用 pandas apply 方法或类似的方法来执行此操作,而不是遍历 df1.index?谢谢!
【问题讨论】:
标签: python python-3.x pandas