【发布时间】:2021-10-22 13:05:46
【问题描述】:
我基本上有一个包含 7 列的数据框 (df1)。这些值始终是整数。 我有另一个数据框(df2),它有 3 列。其中一列是具有 7 个整数序列的列表列表。示例:
import pandas as pd
df1 = pd.DataFrame(columns = ['A','B','C','D','E','F','G'],
data = np.random.randint(1,5,(100,7)))
df2 = pd.DataFrame(columns = ['Name','Location','Sequence'],
data = [['Alfred','Chicago',
np.random.randint(1,5,(100,7))],
['Nicola','New York',
np.random.randint(1,5,(100,7))]])
我现在想将 df1 中的行序列与 df2 中的“序列”列进行比较,并获得重叠百分比。在原始的 for 循环中,这看起来像这样:
df2['Overlap'] = 0.
for i in range(len(df2)):
c = sum(el in list(df2.at[i, 'Sequence']) for el in df1.values.tolist())
df2.at[i, 'Overlap'] = c/len(df1)
现在的问题是我的 df2 有 500000 行,而我的 df1 通常在 50-100 左右。这意味着该任务很容易变得非常耗时。我知道必须有一种方法可以用 numpy 优化它,但我无法弄清楚。有人可以帮我吗?
【问题讨论】:
标签: python pandas dataframe numpy optimization