如何根据其他行更新行?
How to update rows based on other rows?
让我举个例子问我的问题。例如我有一个这样的数据框:
DAY A B
0 10 6
1 12 8
2 18 6
3 20 10
4 16 12
5 12 8
6 14 10
我想根据前一列更改每一列。例如 在第 1 行中,我希望我的 A 值为 = (10+12)/2 * 5 = 55。 B 值和其他行也一样。我想要的数据框应该是这样的:
DAY A B
1 55 35
2 75 35
3 95 40
4 90 55
5 70 50
6 65 45
我需要你们的帮助。
使用DataFrame.add
for add shifted values by DataFrame.shift
with divide by 2
and multiple by 5
and last remove first only NaN
row by DataFrame.iloc
:
df = df.add(df.shift()).div(2).mul(5).iloc[1:]
print (df)
A B
DAY
1 55.0 35.0
2 75.0 35.0
3 95.0 40.0
4 90.0 55.0
5 70.0 50.0
6 65.0 45.0
或者可以使用滚动 mean
和 2
将 2 行相加并除以 2
:
df = df.rolling(2).mean().mul(5).iloc[1:]
print (df)
A B
DAY
1 55.0 35.0
2 75.0 35.0
3 95.0 40.0
4 90.0 55.0
5 70.0 50.0
6 65.0 45.0
让我举个例子问我的问题。例如我有一个这样的数据框:
DAY A B
0 10 6
1 12 8
2 18 6
3 20 10
4 16 12
5 12 8
6 14 10
我想根据前一列更改每一列。例如 在第 1 行中,我希望我的 A 值为 = (10+12)/2 * 5 = 55。 B 值和其他行也一样。我想要的数据框应该是这样的:
DAY A B
1 55 35
2 75 35
3 95 40
4 90 55
5 70 50
6 65 45
我需要你们的帮助。
使用DataFrame.add
for add shifted values by DataFrame.shift
with divide by 2
and multiple by 5
and last remove first only NaN
row by DataFrame.iloc
:
df = df.add(df.shift()).div(2).mul(5).iloc[1:]
print (df)
A B
DAY
1 55.0 35.0
2 75.0 35.0
3 95.0 40.0
4 90.0 55.0
5 70.0 50.0
6 65.0 45.0
或者可以使用滚动 mean
和 2
将 2 行相加并除以 2
:
df = df.rolling(2).mean().mul(5).iloc[1:]
print (df)
A B
DAY
1 55.0 35.0
2 75.0 35.0
3 95.0 40.0
4 90.0 55.0
5 70.0 50.0
6 65.0 45.0