我有一个带有三列的初始数据帧,其中一列包含字符串列表。我们的目标是将每一行拆分为obj
列中的元素数,例如:
from to obj
--------------------
abc xyz [foo, bar]
def uvw [gee]
ghi rst [foo, bar, baz]
变成这样:
from to obj
--------------------
abc xyz foo
abc xyz bar
def uvw gee
ghi rst foo
ghi rst bar
ghi rst baz
目前我是这样做的:
transformed = pd.DataFrame(columns=['from', 'to', 'obj'])
for index, row in origin.iterrows():
for obj in row['obj']:
transformed = transformed.append(pd.Series({
'from': row['from'],
'to': row['to'],
'obj': obj
}), ignore_index=True)
这个效果很好,只是速度慢得很。如果origin
有100000个元素,那么计算transformed
可能需要一个小时。你知道吗
有没有一种矢量化的方法来获得相同的结果,而不必求助于Python循环?你知道吗
本质上,您是根据您的列重复或链接值。你知道吗
因此,您可以根据需要使用^{} 和^{} 。该解决方案对于少量列是有效的,如您的示例所示。你知道吗
相关问题 更多 >
编程相关推荐