我有一个包含四列的DataFrame df
:Date
、Location
、Category
和Value
.对于每个Date
和Location
,我try 更改列Value
中包含另一列Category
中具有5或更大值的值的值,并将其替换为具有Category
5的行的值.
df:
Date Location Category Value
20220101 FE 1 0.23
20220101 FE 2 0.24
20220101 FE 3 0.26
20220101 FE 4 0.27
20220101 FE 5 0.28
20220101 FE 6 0.30
20220101 RP 5 0.32
20220101 RP 6 0.35
20220102 FE 1 0.20
20220102 FE 2 0.23
20220102 FE 3 0.25
20220102 FE 4 0.26
20220102 FE 5 0.28
20220102 FE 6 0.32
df_new:
Date Location Category Value
20220101 FE 1 0.23
20220101 FE 2 0.24
20220101 FE 3 0.26
20220101 FE 4 0.27
20220101 FE 5 0.28
20220101 FE 6 0.28 <-- changed with value from row with Category == 5
20220101 RP 5 0.32
20220101 RP 6 0.32 <-- changed with value from row with Category == 5
20220102 FE 1 0.20
20220102 FE 2 0.23
20220102 FE 3 0.25
20220102 FE 4 0.26
20220102 FE 5 0.28
20220102 FE 6 0.28 <-- changed with value from row with Category == 5
到目前为止,我只能提取特定Date
中的Value
和Category
=5中的Location
.
df.loc[(df['Date'] == 20220101) & (df['Location'] == 'FE') & (df['Category'] == 5), 'Value'].iloc[0]
是否有简单而有效的方式来改变列Value
中的列值?非常感谢!
对于可再生性:
df = pd.DataFrame({
'Date':[20220101, 20220101, 20220101, 20220101, 20220101, 20220101, 20220101, 20220101, 20220102, 20220102, 20220102, 20220102, 20220102, 20220102, 20220102, 20220102],
'Location':['FE', 'FE', 'FE', 'FE', 'FE', 'FE', 'RP', 'RP', 'FE', 'FE', 'FE', 'FE', 'FE', 'FE', 'RP', 'RP'],
'Category':[1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6],
'Value':[0.23, 0.24, 0.26, 0.27, 0.28, 0.3, 0.32, 0.35, 0.2, 0.23, 0.25, 0.26, 0.28, 0.32, 0.34, 0.36]
})