[英]How to get all the linked elements (rows) which are repeated in pandas?
我正在嘗試獲取顧客消費過的所有食物編號。 如果我輸入讓我們說 customerId = C15,那么它應該返回客戶有鏈接的所有 food_id。 我嘗試了一些東西。
import datetime
import random
import pandas as pd
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
df = pd.DataFrame({
'food_id':['B1', 'CF', 'C1', 'CF', 'B1', 'IO', 'B1', 'FT', 'BR','CF', 'C1', 'SM', 'IC','B1', 'SM'],
'purch_amt':[150.5, 270.65, 65.26, 110.5, 948.5, 2400.6, 5760, 1983.43, 2480.4, 250.45, 75.29, 3045.6, 500, 500, 250],
'ord_date': ['05-10-2022','09-10-2022','05-10-2022','08-17-2022','10-09-2022','07-27-2022','10-09-2022','10-10-2022','10-10-2022','06-17-2022','07-08-2022','04-25-2022','02-08-2022','08-08-2022','07-09-2022'],
'customer_id':['C31','C31','D35','D31','C35','D31','C35','D31','D35','C31','D35','D35','D35','C35','C38']})
def get_mostly_ordered_food_id():
print('Max food_id ordered')
result = df['food_id'].value_counts().rename_axis('food_id').reset_index(name='counts')
df2 = pd.DataFrame(result)
print(df2.head(3))
def show_data():
result = df.groupby(['customer_id'])
print(result.first())
def test_add_data():
foodID = ['B1', 'CF', 'C1', 'IO', 'FT', 'BR', 'IC', 'SM']
customerID = ['C31','D35','D31','C35','C38']
date = 'Test-Data'
for i in range(0,10):
df.loc[len(df.index)] = [random.choice(customerID), random.choice(foodID), date, 500]
print(df)
get_mostly_ordered_food_id()
如果我提供一個輸入,比如一個客戶 ID,那么它應該返回所有已消費的食品 ID。 我也不應該重復。
試圖獲取例如輸入“C15”(這是客戶 ID)
它應該返回例如“B1,C2”(它們是食物 ID)並且沒有重復。 (如果有任何重復,它應該發出警告。)
(注意:可以在這個相關問題中閱讀有關此作業的更多上下文。 )
def foods_of_customer(df, customer_id):
foods = df['food_id'].loc[df['customer_id'] == customer_id]
return foods.values
df.loc[]
方法返回所有滿足其中條件的行。 food.values 方法將food.values
轉換為 NunPy 數組。 之后您可以應用np.unique
以避免重復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.