我试图找出如何基于数据帧之间的部分值比较来矢量化数据合并:
假设我有一些数据:
df = pd.DataFrame([['Abe', 'AA01', '40'],
['Bill', 'AA02', '42'],
['Carly', 'BB01', '43'],
['Debbie', 'BB02', '44'],
['Edward', '', '45']],
columns=['name', 'id', 'age'])
name id age
0 Abe AA01 40
1 Bill AA02 42
2 Carly BB01 43
3 Debbie BB02 44
4 Edward 45
然后我有一些数据包含一些关于ID的元数据:
meta = pd.DataFrame([['AA', 'Alpha Apples'],
['BB', 'Beta Bananas']],
columns=['id-prefix', 'group'])
id-prefix group
0 AA Alpha Apples
1 BB Beta Bananas
所以“组”是由id和id前缀之间的比较决定的。 如何按惯用方式和性能合并这些信息?你知道吗
我写了这样的东西:
df['group'] = ''
for row in meta.values:
id_prefix, group = row
df.loc[df.id.str.startswith(id_prefix), 'group'] = group
从而得到正确的数据:
name id age group
0 Abe AA01 40 Alpha Apples
1 Bill AA02 42 Alpha Apples
2 Carly BB01 43 Beta Bananas
3 Debbie BB02 44 Beta Bananas
4 Edward 45
但它在大型数据帧上的性能不是很好,而且似乎数据帧循环通常是错误的解决方案,因此不鼓励这样做。你知道吗
解决这个问题的更好办法是什么?你知道吗
这应该比你的方法快。您可以在末尾添加
.fillna('')
相关问题 更多 >
编程相关推荐