2 回答
TA贡献1821条经验 获得超4个赞
因此,如果我理解正确,我们可以隔离零,然后用列表中的值填充它们。
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
希望这可以帮助。
添加回答
举报