我对我的代码结构有疑问。我有以下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)
有帮助吗?
将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()
name product country
0 A 2 1
1 B 1 5