有如下Dataframe:
Dr Cr
a 10 0
b 0 1
c 0 6
d 2 0
e 3 0
f 7 0
g 0 5
h 0 2
i 0 3
j 0 5
想實作的效果是(針對非零數字):
1. 找到Dr列和Cr列中一樣的數字,輸出相關數字所在行:
d 2 0
h 0 2
e 3 0
i 0 3
2. 找到Cr列中幾個數字加起來等于Dr列中的某個數字的所有組合:
a 10 0
g 0 5
j 0 5
a 10 0
b 0 1
c 0 6
i 0 3
f 7 0
g 0 5
h 0 2
f 7 0
h 0 2
j 0 5
沒有窮舉,類似是這樣的效果...
關于第1個功能,我自己的思路如下:
for i in list(df['Cr']):
if i == 0:
continue
if i in list(df['Dr']):
df1 = df.iloc[np.flatnonzero(df['Dr'] == i)]
df2 = df.iloc[np.flatnonzero(df['Cr'] == i)]
df = pd.concat([df1,df2])
print(df)
但是結果如下,不知道為何只顯示出第1個匹配項:
Dr Cr
d 2 0
h 0 2
而關于第2個功能...目前毫無頭緒...是需要用遞回嗎?
360度后空翻跪地磕頭求助!!!
uj5u.com熱心網友回復:
第2個,我想是這樣:
遍歷 df
篩選所有 Cr 比當前 Dr 小的資料. 用 遞回零錢找零 演算法 算出匹配的 資料.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/113810.html
上一篇:Python獲取不到文本框內容
