我想我在这里有一个非常直截了当的问题。基本上我有一个包含一列的表,其中每行包含一组先前已从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'])
(即我想计算列"选项"中的值的数量,并在名为&#34的新列中返回该计数; num_choices")
在上面提供的示例(输入行#)上运行此操作将在其旁边创建一个值为6的新列,因为选项的数量为6.
如何系统地为我的所有5000行做这个?
我尝试用Pandas iterrow()函数做到这一点,但是我被告知这样做的效率低于简单地使用NumPy ndArray矢量化。但我似乎无法弄清楚如何做到这一点。
非常感谢你的帮助!
答案 0 :(得分:0)
正如上面的评论中所提到的,实际上没有任何方法可以对包含任意Python对象的数组进行矢量化操作。
我认为你不能比使用简单的for
循环或列表理解做得更好,例如:
df['num_choices'] = np.array([len(row) for row in df.options])