我有一個 Python 資料框,其中計算和累積了不同的產品類別(cumsum)圖 10,如下例所示:
df2 = pd.DataFrame(np.array([['NY',2, 4, 8,10,15,20,36], ['LA',4, 5, 6,7,11,25,29,], ['BC',7, 8, 9,10,19,29,45]]), columns=['CITY','a', 'b', 'c','d','e','f','g'])
df2
expected_result = pd.DataFrame(np.array([['NY','d'], ['LA','e'], ['BC','d']]),
columns=['CITY','min'])
expected_result
非常感謝您對此提供幫助!!!
弗朗西斯科
uj5u.com熱心網友回復:
對于第一次匹配大于或等于通過10比較值DataFrame.ge并使用DataFrame.idxmax:
df = df2.set_index('CITY').astype(int).ge(10).idxmax(axis=1).reset_index(name='min')
print (df)
CITY min
0 NY d
1 LA e
2 BC d
如果沒有大于或等于的值,則上述解決方案失敗,則需要測驗是否存在至少匹配:
df2 = pd.DataFrame(np.array([['NY',2, 4, 8,10,15,20,36],
['LA',4, 5, 6,7,11,25,29,],
['BC',1, 2, 3,4,5,6,9]]),
columns=['CITY','a', 'b', 'c','d','e','f','g'])
m = df2.set_index('CITY').astype(int).ge(10)
df = m.idxmax(axis=1).where(m.any(axis=1), 'no match').reset_index(name='min')
print (df)
CITY min
0 NY d
1 LA e
2 BC no match
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432742.html
