呼啦一陣風(fēng)
2023-12-26 15:51:38
我有一個(gè)數(shù)據(jù)框,其中包含不同生產(chǎn)商的許多計(jì)算機(jī),在不同年份發(fā)布,他們的銷(xiāo)售數(shù)字......現(xiàn)在,我的目標(biāo)是找到 2015 年發(fā)布的所有以前幾年都不存在的新計(jì)算機(jī)。這意味著我必須控制計(jì)算機(jī)名稱(chēng)是否在 2015 年之前的任何年份中列出,如果是,我想刪除 2015 年列表中的這些計(jì)算機(jī)名稱(chēng)。此外,還有2016、2017年發(fā)布的電腦……不應(yīng)該被忘記。我想要知道這些新電腦的數(shù)量。好吧,我有很多值,我不知道名稱(chēng)是否重復(fù),只是年份不同,但這是我的第一個(gè)想法。df_noduplicates=df[df.Year<2016](subset=['Name'], keep='first')df_Year2013 = df[df.Year==2015]print(df_Year2015.shape(0))但我只收到錯(cuò)誤“DataFrame”對(duì)象在運(yùn)行后不可調(diào)用。應(yīng)該是因?yàn)榈谝恍械脑?,但我不知道,我做錯(cuò)了什么。另一個(gè)問(wèn)題是,我應(yīng)該使用“set”來(lái)解決這個(gè)練習(xí),但我不知道如何在這種情況下使用它。提前謝謝你的幫助。:)
1 回答

江戶(hù)川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
怎么樣 :
#find all computers' names present before 2015
s = set(df[df.Year<2015]['Name'])
# extract from the dataframe the lines where the name isn't already in s AND are there in 2015 (be carefull about those parenthesis)
subset_df = df[(df.Name.isin(s)==False) & (df.Year==2015)]
#print the names directly from the subset :
new_names = subset_df['Name'].tolist()
print(new_names)
添加回答
舉報(bào)
0/150
提交
取消