找到术语频率和处理各个值的替代方法

问题描述 投票:0回答:1

我对我的代码结构有疑问。我有以下csv

name product country
 A     game1   USA
 A     game2   USA 
 B     bis     World
 .
 . 

基本上,每个供应商的名称出现多次(与供应商的产品数量一样多)。我的目的是创建一个包含供应商名称,产品数量和国家/地区的csv(如果值为“world”,我将分配5或者1)。到目前为止,我还没有设法使用更多的算法思维模式。相反,我使用了下一个代码

df = pd.read_csv("testtest.csv") 

num_listings = df['vendor_name'].value_counts().to_dict()

print(num_listings)

然后我将字典转换为csv文件。我假设使用for循环可以使我的代码更容易,因为我可以使用计数器,只要名称保持不变只是使用该计数器。我不知道该怎么办呢。我已经尝试过以下但是没有用。

ds = pd.read_csv("testtest.csv", index_col = 'vendor_name') 

x=0
for index in ds:
  if ds['index'] == ds['index']:
    x=x+1
print(x) 

有帮助吗?

python pandas loops csv
1个回答
1
投票

groupby.agg与每列的聚合函数字典一起使用。

import pandas as pd

d = {'product': pd.Series.nunique,
     'country': lambda x: 5 if (x=='World').any() else 1}
df.groupby('name').agg(d).reset_index()

Output:

  name  product  country
0    A        2        1
1    B        1        5
© www.soinside.com 2019 - 2024. All rights reserved.