pandas 根据下一行中的单元格值更新Dataframe中单元格的值

j8ag8udp  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(160)

我想在数据框中添加一个上限列。该行的上限条件是下一行“起始数量”-1,最后一行默认为1000。x1c 0d1x
我使用了下面的代码,它工作得很好,但是当数据组织不正确时,它会失败,而且也不会覆盖最后一行

for i in range(len(df_p)):
        if( i < (len(df_p)-1)):
            df_p.iloc[i, df_p.columns.get_indexer(['Upper Bound'])] = np.where(((df_p.iloc[i, df_p.columns.get_indexer(['Item Internal ID'])] == df_p.iloc[i+1, df_p.columns.get_indexer(['Item Internal ID'])])), df_p.iloc[i+1, df_p.columns.get_indexer(['From Quantity'])] - 1, 100000 )
enyaitl3

enyaitl31#

您可以使用pandas.Series.shift来解决此问题:

df["Upper Bound"] = df["From Quantity"].shift(-1).sub(1).fillna(1000, downcast="infer")

输出:

print(df)
​
  Item  From Quantity  Upper Bound
0    a              0           24
1    a             25           49
2    a             50         1000

相关问题