将列表的部分转换为 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 数据框的主要内容,如果未能解决你的问题,请参考以下文章

Python/Pandas - 性能改进 - 将列分成多个部分并将字符串序列转换为列表

将 Sharepoint 列表转换为 Pandas 数据框

将 pandas 数据框转换为列表列表以输入 RNN

将字典列表转换为 Pandas 数据框

将对象列表转换为 pandas 数据框

将日期和列表的元组转换为 Pandas 数据框