gpt4 book ai didi

python - 如何计算 panda 表的一列中的逗号分隔值?

转载 作者:太空狗 更新时间:2023-10-30 02:44:16 25 4
gpt4 key购买 nike

我有以下代码:

businessdata = ['Name of Location','Address','City','Zip Code','Website','Yelp',
'# Reviews', 'Yelp Rating Stars','BarRestStore','Category',
'Price Range','Alcohol','Ambience','Latitude','Longitude']

business = pd.read_table('FL_Yelp_Data_v2.csv', sep=',', header=1, names=businessdata)
print '\n\nBusiness\n'
print business[:6]

它读取我的文件并创建一个我可以使用的 Panda 表。我需要的是计算“Category”变量的每一行中有多少个类别,并将此数字存储在名为“# Categories”的新列中。这是目标列示例:

Category                                         
French
Adult Entertainment , Lounges , Music Venues
American (New) , Steakhouses
American (New) , Beer, Wine & Spirits , Gastropubs
Chicken Wings , Sports Bars , American (New)
Japanese

期望的输出:

Category                                        # Categories  
French 1
Adult Entertainment , Lounges , Music Venues 3
American (New) , Steakhouses 2
American (New) , Beer, Wine & Spirits , Gastropubs 4
Chicken Wings , Sports Bars , American (New) 3
Japanese 1

编辑 1:

原始输入 = CSV 文件。目标列:“类别”我还不能发布截图。我不认为要计算的值是列表。

这是我的代码:

business = pd.read_table('FL_Yelp_Data_v2.csv', sep=',', header=1, names=businessdata, skip_blank_lines=True)
#business = pd.read_csv('FL_Yelp_Data_v2.csv')

business['Category'].str.split(',').apply(len)
#not sure where to declare the df part in the suggestions that use it.

print business[:6]

但我不断收到以下错误:

TypeError: object of type 'float' has no len() 

编辑 2:

我放弃了。感谢您的所有帮助,但我必须想出别的办法。

最佳答案

假设 Category 实际上是一个列表,您可以使用 apply(根据@EdChum 的建议):

business['# Categories'] = business.Category.apply(len)

如果不是,首先需要解析,转成列表。

df['Category'] = df.Category.map(lambda x: [i.strip() for i in x.split(",")])

您能否显示一些示例输出,以准确说明该列的内容(包括正确的引述)?

附言@EdChum 感谢您的建议。我很感激他们。我相信列表理解方法可能更快,根据我用 30k+ 行数据测试的一些文本数据样本:

%%timeit
df.Category.str.strip().str.split(',').apply(len)
10 loops, best of 3: 44.8 ms per loop

%%timeit
df.Category.map(lambda x: [i.strip() for i in x.split(",")])
10 loops, best of 3: 28.4 ms per loop

甚至考虑 len 函数调用:

%%timeit
df.Category.map(lambda x: len([i.strip() for i in x.split(",")]))
10 loops, best of 3: 30.3 ms per loop

关于python - 如何计算 panda 表的一列中的逗号分隔值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com