如果数据框包含列中的值,如何在另一列中执行计算? - Pandas/Python
If a dataframe contains a value in a column, how to perform a calculation in another column? - Pandas/ Python
原始数据框:
A
B
C
123
1500
0
输出:
A
B
C
123
1500
1.2
需要逻辑:如果A列包含123,那么对于C列,取B的值并乘以0.0008,C列中的所有其他值都不应更改。
您可以检查“A”列的值是否为 123 并使用“C”上的 mask
替换那里的值:
df['C'] = df['C'].mask(df['A']==123, df['B']*0.0008)
输出:
A B C
0 123 1500 1.2
我认为您只是想检查 dataframe['A'] 是否包含 123,如果是,则应将 B 列值乘以 0.0008 并将其附加到 C 列中。如果是这种情况,您应该这样做随它去吧:
#Considering your dataframe is a pandas dataframe stored in variable 'df'
vals_a = df.index[df['A'] == 123].tolist () #Returns the list of the indexes containing 123.
for b in vals_a:
val_b = df['B'].values[b]
df.loc[val_b,'C'] = df.loc[b, 'B']*0.0008
如果 A 列包含 123,这基本上将 'C' 列中的相同索引值替换为 0.0008 与 B 列中的值的乘积。
原始数据框:
A | B | C |
---|---|---|
123 | 1500 | 0 |
输出:
A | B | C |
---|---|---|
123 | 1500 | 1.2 |
需要逻辑:如果A列包含123,那么对于C列,取B的值并乘以0.0008,C列中的所有其他值都不应更改。
您可以检查“A”列的值是否为 123 并使用“C”上的 mask
替换那里的值:
df['C'] = df['C'].mask(df['A']==123, df['B']*0.0008)
输出:
A B C
0 123 1500 1.2
我认为您只是想检查 dataframe['A'] 是否包含 123,如果是,则应将 B 列值乘以 0.0008 并将其附加到 C 列中。如果是这种情况,您应该这样做随它去吧:
#Considering your dataframe is a pandas dataframe stored in variable 'df'
vals_a = df.index[df['A'] == 123].tolist () #Returns the list of the indexes containing 123.
for b in vals_a:
val_b = df['B'].values[b]
df.loc[val_b,'C'] = df.loc[b, 'B']*0.0008
如果 A 列包含 123,这基本上将 'C' 列中的相同索引值替换为 0.0008 与 B 列中的值的乘积。