根据条件使用来自另一列的值创建新列
create new column with values from another column based on condition
我有一个数据框
A B Value FY
1 5 a 2020
2 6 b 2020
3 7 c 2021
4 8 d 2021
我想创建一个列 'prev_FY',它查看 'value' 列和上一年,并填充到 FY 列的当年行;
我想要的输出是:
A B Value FY prev_FY
1 5 a 2020
2 6 b 2020
3 7 c 2021 a
4 8 d 2021 b
我尝试使用 pivottable
但它不起作用,因为值与 FY 对应的值保持不变。 SHIFT
函数不可行,因为我有数百万行。
使用:
df['g'] = df.groupby('FY').cumcount()
df2 = df[['FY','Value','g']].assign(FY = df['FY'].add(1))
df = df.merge(df2, on=['FY','g'], how='left', suffixes=('','_prev')).drop('g', axis=1)
print (df)
A B Value FY Value_prev
0 1 5 a 2020 NaN
1 2 6 b 2020 NaN
2 3 7 c 2021 a
3 4 8 d 2021 b
我有一个数据框
A B Value FY
1 5 a 2020
2 6 b 2020
3 7 c 2021
4 8 d 2021
我想创建一个列 'prev_FY',它查看 'value' 列和上一年,并填充到 FY 列的当年行; 我想要的输出是:
A B Value FY prev_FY
1 5 a 2020
2 6 b 2020
3 7 c 2021 a
4 8 d 2021 b
我尝试使用 pivottable
但它不起作用,因为值与 FY 对应的值保持不变。 SHIFT
函数不可行,因为我有数百万行。
使用:
df['g'] = df.groupby('FY').cumcount()
df2 = df[['FY','Value','g']].assign(FY = df['FY'].add(1))
df = df.merge(df2, on=['FY','g'], how='left', suffixes=('','_prev')).drop('g', axis=1)
print (df)
A B Value FY Value_prev
0 1 5 a 2020 NaN
1 2 6 b 2020 NaN
2 3 7 c 2021 a
3 4 8 d 2021 b