原始資料框:
| 一種 | 乙 | C |
|---|---|---|
| 123 | 1500 | 0 |
輸出:
| 一種 | 乙 | C |
|---|---|---|
| 123 | 1500 | 1.2 |
需要的邏輯:如果 A 列包含 123,那么對于 C 列,取 B 的值并乘以 0.0008,C 列中的所有其他值都不應更改。
uj5u.com熱心網友回復:
您可以檢查“A”列的值是否為 123,并mask在“C”上使用來替換那里的值:
df['C'] = df['C'].mask(df['A']==123, df['B']*0.0008)
輸出:
A B C
0 123 1500 1.2
uj5u.com熱心網友回復:
我認為您只是想檢查 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 列中的值相乘。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443601.html
下一篇:根據特定索引將值設定為新列
