我有一個(gè) pandas DataFrame(實(shí)際數(shù)據(jù)集要大得多,包含 1-50 的數(shù)字): date main N1 N2 N3 N4 N50 2020-09-18 7-12-14-40-42 7 12 14 40 421 2020-09-11 2-5-24-43-45 2 5 24 43 452 2020-09-04 5-23-28-38-49 5 23 28 38 493 2020-08-28 8-11-22-38-41 8 11 22 38 414 2020-08-21 26-27-30-46-49 26 27 30 46 49我想返回每個(gè)數(shù)字第一次出現(xiàn)的行索引。到目前為止,我能夠?qū)崿F(xiàn)這一目標(biāo)的唯一方法是“手動(dòng)”使用lotteryData.loc[(lotteryData.N5==1)].head(49)在本例中,行索引號(hào)為 2。這顯然非常笨拙,并且根本沒(méi)有利用 Pandas DataFrame 的功能。有沒(méi)有一種方法可以直接迭代 5-23-28-38-49 格式的列表來(lái)捕獲此信息,或者可以迭代列以查找 1 到 50 之間所有數(shù)字的第一次出現(xiàn)
1 回答

holdtom
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
我們可以stack做drop_duplicates
out = df.loc[:,'N2':].stack().drop_duplicates()
0 N2 12
N3 14
N4 40
N5 42
1 N2 5
N3 24
N4 43
N5 45
2 N2 23
N3 28
N4 38
N5 49
3 N2 11
N3 22
N5 41
4 N2 27
N3 30
N4 46
dtype: int64
添加回答
舉報(bào)
0/150
提交
取消