如何仅替换 DataFrame 中的 1 个元素 (Python-Pandas)

How to replace only 1 element in a DataFrame (Python-Pandas)

:D 我有一个这样的数据框,每 5 分钟就会在其中添加一次分类信息。 索引是同一日期 (ìndex_date),分类数据是列 FruitsNumber 列计算它每 5 分钟收到的每种水果的数量,总是增加它们的价值,而 Diff_number 列是与最后输入的分类数据的差异。 col Diff_number 由以下内容组成:

df['Diff_number'] = df.groupby(['Fruit'])['Number'].diff().fillna(0)

index_date Fruits Number Diff_number
16:10:16.000 Apple 1 0
16:10:16.000 Grapes 3 0
16:10:16.000 Orange 4 0
16:15:16.000 Apple 5 4
16:15:16.000 Grapes 8 5
16:15:16.000 Orange 10 6
16:20:16.000 Apple 10 5
16:20:16.000 Grapes 8 0
16:20:16.000 Orange 1 -9

例如。在 16:10:16.000 时,它得到 1 个苹果,差异为 0,5 分钟后,它总共得到 5 个苹果,差异为 4。 这里一切都很好,但我的问题是:

有没有办法消除 -9 并始终取 Number 列中的数字?

我期望的是:

index_date Fruits Number Diff_number
16:10:16.000 Apple 1 0
16:10:16.000 Grapes 3 0
16:10:16.000 Orange 4 0
16:15:16.000 Apple 5 4
16:15:16.000 Grapes 8 5
16:15:16.000 Orange 10 6
16:20:16.000 Apple 10 5
16:20:16.000 Grapes 8 0
16:20:16.000 Orange 1 1

当 col Number 由于某种原因停止递增计数时,Diff_number col 仅在该行中采用 Number 的值。

实现 我试着这样做:

if df.iloc[index]['Diff_number'] < 0:
   df.iloc[index]["Diff_numver"] = df.iloc[index]["Number"] 

但它不起作用:c

你可以这样做:

if df.iloc[row]['Diff_number'] < 0:
   df.at[row, 'Diff_number'] = df.iloc[row]['Number']