我有一个看起来像这样的数据框:
product score
0 1179160 0.424654
1 1066490 0.424509
2 1148126 0.422207
3 1069104 0.420455
4 1069105 0.414603
.. ... ...
491 1160330 0.168784
492 1069098 0.168749
493 1077784 0.168738
494 1193369 0.168703
495 1179741 0.168684
我想要实现的是将与特定产品相对应的某些得分值乘以一个常数。 我在这样的列表中有此乘法的乘积目标:[1069104,1069105](这只是简化的 例如,实际上会有两个以上的产品),我的目标是获得这个:
将乘积1069104和1069105对应的分数乘以10:
product score
0 1179160 0.424654
1 1066490 0.424509
2 1148126 0.422207
3 1069104 4.204550
4 1069105 4.146030
.. ... ...
491 1160330 0.168784
492 1069098 0.168749
493 1077784 0.168738
494 1193369 0.168703
495 1179741 0.168684
我知道存在DataFrame.multiply,但是检查了适用于整列的示例,而我只是更改了这些特定值。
答案 0 :(得分:5)
您可以使用布尔索引和isin
:
prod_list = [1069104, 1069105]
df.loc[df['product'].isin(prod_list), 'score'] *= 10
答案 1 :(得分:1)
您可以使用loc
功能(documentation)-
df = pd.DataFrame([[1, 'a'], [2, 'a'], [3, 'b']], columns=['num', 'c'])
df.loc[df.c == 'a', 'num'] = df.num * 10
答案 2 :(得分:0)
我们可以使用带循环条件的if条件乘以特定值
for i in range (len(df)): `if((df[colun]==1069104) or (df[colun]==1069105)): df[score]=df[score]*10
答案 3 :(得分:0)
import pandas as pd
# Make data
df = pd.DataFrame({'product': [2, 4, 8, 0],
'score': [0.2, 0.1, 0.2, 0.1]})
# List of products to change
product_list = [8,4]
for product_no in product_list: # Loop though product numbers
product = df.loc[df['product'] == product_no] # Find the product corresponding to given product number
score = product["score"].values[0] # Extract the score for the given product number
print(score*10) # Modify score as you please
df.at[product.index[0], "score"] = score*10 # If you want to modify the dataframe with the new value
print(df)