将列表的部分转换为 Pandas 数据框
Posted
技术标签:
【中文标题】将列表的部分转换为 Pandas 数据框【英文标题】:Convert a list's part into a Pandas Dataframe 【发布时间】:2020-05-22 04:46:31 【问题描述】:我有一个包含值的列表“list_of_categories_train”:
0 [Men, Tops, T-shirts]
1 [Electronics, Computers & Tablets, Components ...
2 [Women, Tops & Blouses, Blouse]
3 [Home, Home Décor, Home Décor Accents]
4 [Women, Jewelry, Necklaces]
...
1048570 [Kids, Other, Other]
1048571 [Other, Daily & Travel items, Health Care]
1048572 [Women, Athletic Apparel, Pants, Tights, Leggi...
1048573 [Men, Shoes, Fashion Sneakers]
1048574 [Kids, Toys, Dolls & Accessories]
Name: category_name, Length: 1048575, dtype: object
我需要选择每个列表的第一个单词并将其放入数据框中。但这需要几个小时。最快的方法是什么? 我的代码是:
i=0
while i <= len(list_of_categories_train) :
data_train['noOfCategories']= list_of_categories_train[i][0]
i=i+1
【问题讨论】:
【参考方案1】:假设list_of_categories_train
是你的系列,如果系列中的每个元素都是一个列表,你可以试试:
data_train['noOfCategories'] = list_of_categories_train.apply(lambda x: x[0])
【讨论】:
【参考方案2】:用途:
data_train['noOfCategories'] = [x[0] for x in list_of_categories_train]
更慢:
data_train['noOfCategories'] = list_of_categories_train.str[0]
【讨论】:
通过此代码,我得到第一个字母,我需要第一个单词,即 Men,Electronics ... @MuhammadAffan -print (type(data_train.loc[0, 'category_name']))
是什么?
@MuhammadAffan - 使用data_train['noOfCategories'] = [x[0] for x in list_of_categories_train]
看来apply
对 OP 很有效,但对于非常大的数据集,第一个建议可能更快。以上是关于将列表的部分转换为 Pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章