【发布时间】:2021-11-12 03:49:39
【问题描述】:
所以我的数据框如下所示: 我试图找到一种更简单的方法来从 Groupby 获取对象,然后将其放入字典中。 我必须获取索引,然后执行 for 循环以获取 Product 中每一行的确切字符串。
如果需要,请提供更多详细信息: 我的目标是找到重复的订单 ID,然后从列中取出产品并添加到字典中:
-
键 = 产品
-
价值 = 产品被发现一起订购的次数
(我不是在寻找优化查找重复项的方法,我知道我可以使用df.duplicated)
代码:
for date, df in df1.groupby('Order Date'):
if df.Product.count() > 1:
indice = df.Product.index
for data in indice:
product = df.loc[data].at['Product']
#update dictionary counter
product_dict[product] = product_dict.get(product) + 1
else:
continue
为方便起见,您可以改用此 df。我列为字典:
{'Order ID': ['147268', '148041', '149343', '149964', '149350', '141732', '149620', '142451', '146039', '143498', '141316', '144804', '144804', '145270', '142789'],
'Product': ['Wired Headphones', 'USB-C Charging Cable', 'Apple Airpods Headphones', 'AAA Batteries (4-pack)', 'USB-C Charging Cable', 'iPhone', 'Lightning Charging Cable', 'AAA Batteries (4-pack)', '34in Ultrawide Monitor', 'AA Batteries (4-pack)', 'AAA Batteries (4-pack)', 'Wired Headphones', 'iPhone', 'Google Phone', 'AAA Batteries (4-pack)']}
预期输出:
{“有线耳机”:8090,“USB-C 充电线”:9425,“Apple Airpods 耳机”:6374,“AAA 电池(4 件装)”:8266,“iPhone”:3663,“闪电充电”电缆':9074,'34 英寸超宽显示器':2500,'AA 电池(4 包)':8167,'Google 手机':3091,'Macbook Pro 笔记本电脑':1878,'ThinkPad 笔记本电脑':1605,'27 英寸 FHD显示器”:3010,“Bose SoundSport 耳机”:5459,“平板电视”:1827,“27 英寸 4K 游戏显示器”:2457,“LG 烘干机”:257,“20 英寸显示器”:1635,“LG 洗衣机”:268 , 'Vareebadd 电话': 1120}
【问题讨论】:
-
欢迎来到 Stack OverFlow!请不要发布数据的图像,因为我们无法测试它们。相反,直接在代码块中发布 DataFrame (
df) 的示例和预期的输出。一个好方法是将print(df.to_dict(orient=‘list’))的输出与print(df)共享。这使我们能够轻松重现您的问题并为您提供帮助。 -
非常感谢您的快速响应和欢迎。我将我的数据框缩小为一个较小的数据框,因为原始数据框太大而无法粘贴为 dict。
-
谢谢,现在好多了!但是预期的输出也有助于确认我是否正确理解了问题。我的回答是否产生了预期的输出?
标签: python pandas dataframe pandas-groupby