使用NumPy矢量化创建包含另一列长度的列

2024-10-01 13:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我有个很直截了当的问题。实际上,我有一个表,表中有一列,其中每行包含一组值,这些值以前是从JSON字符串转换而来的。你知道吗

例如,“选项”列有一个单元格值:

[u'Tide Liquid with a Touch of Downy April Fresh 69oz', u'Tide Liquid with Febreze Spring & Renewal 69oz (HE or Non-HE)', u'Tide Liquid HE with Febreze Sport 69oz', u'Tide Liquid HE Clean Breeze 75oz', u'Tide Liquid Original 75oz', u'Other']

我想添加一个新的列,它只计算这个列表中的值的数量。我可以使用如下代码逐行执行此操作:

df['num_choices'] = len(df.loc[row_num,'options'])

(即,我想计算“options”列中的值的数量,并在一个名为“num\u choices”的新列中返回该数量)

在上面提供的示例上运行这个命令(使用输入行#)将在它旁边创建一个值为6的新列,因为选项的计数是6。你知道吗

我该如何系统地为我的所有5000行执行此操作?你知道吗

我尝试用Pandas iterrow()函数来实现这一点,但有人告诉我,这比简单地使用NumPy ndArray矢量化效率要低得多。但我似乎不知道该怎么做。你知道吗

非常感谢你的帮助!你知道吗


Tags: of字符串jsondf数量选项withnum
1条回答
网友
1楼 · 发布于 2024-10-01 13:26:46

正如上面的评论所提到的,对于包含任意Python对象的数组,实际上没有任何方法可以对操作进行矢量化。你知道吗

我不认为你能做得比使用简单的for循环或列表理解更好,例如:

df['num_choices'] = np.array([len(row) for row in df.options])

相关问题 更多 >