如何仅替换 DataFrame 中的 1 个元素 (Python-Pandas)
How to replace only 1 element in a DataFrame (Python-Pandas)
:D
我有一个这样的数据框,每 5 分钟就会在其中添加一次分类信息。
索引是同一日期 (ìndex_date
),分类数据是列 Fruits
。 Number
列计算它每 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']
:D
我有一个这样的数据框,每 5 分钟就会在其中添加一次分类信息。
索引是同一日期 (ìndex_date
),分类数据是列 Fruits
。 Number
列计算它每 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']