2 回答

TA貢獻1821條經驗 獲得超5個贊
因此,如果我理解正確,我們可以隔離零,然后用列表中的值填充它們。
l = range(df.Order.max() + 1, df.Order.max() + df.loc[df.Order == 0, 'Order'].size + 1)
df.loc[df.Order == 0, 'Order'] = l
Col1 Order
0 A 5
1 B 2
2 C 3
3 D 4
4 E 6
5 F 7

TA貢獻1811條經驗 獲得超5個贊
您可以遍歷 DataFrame 以查找 Order = 0 的項目,然后使用 max_order + 1 更新每個 Order。試試這個:
import pandas as pd
data = {
? ? 'Col1': ['A', 'B', 'C', 'D', 'E', 'F'],?
? ? 'Order': [0, 2, 3, 4, 0, 0]
}
df = pd.DataFrame(data)
max_order = df['Order'].max()
for i in range(len(df)):
? ? if df.loc[i, 'Order'] == 0:
? ? ? ? df.loc[i, 'Order'] = max_order + 1
? ? ? ? max_order += 1
df.head()
輸出:
? ? Order? ?Value
0? ? ? A? ? ? ? 5
1? ? ? B? ? ? ? 2
2? ? ? C? ? ? ? 3
3? ? ? D? ? ? ? 4
4? ? ? E? ? ? ? 6
希望這可以幫助。
添加回答
舉報