首页 > 解决方案 > 行中的过滤器值包含用于进一步计算的特定字符串

问题描述

这是我的数据框:

In [2]: fruits = pd.DataFrame({"apple_price": [100, 100, 200, 500, 100, 600, 200], 
   ...:                        "cherry_price": [2, 3, 1, 0, 2, 1, 1], 
   ...:                        "banana_price": [2, 4, 5, 2, 3, 5, 3], 
   ...:                        "prices": ["apple_price", "apple_price", "cherry_price", "banana_price", "cherry_price",
   ...:  "banana_price", "apple_price"], 
   ...:                        "price_fruits": [100, 100, 100, 2, 3, 5, 200]})

In [3]: fruits
Out[3]:
   apple_price  cherry_price  banana_price        prices  price_fruits
0          100             2             2   apple_price           100
1          100             3             4   apple_price           100
2          200             1             5  cherry_price           100
3          500             0             2  banana_price             2
4          100             2             3  cherry_price             3
5          600             1             5  banana_price             5
6          200             1             3   apple_price           200

基本上苹果的价格["apple_price"]必须除以 100(因为价格apple_price是美分而不是欧元),而其他水果的价格应该保持不变。

所以,这将是我的预期输出:

In [5]: fruits_ad
Out[5]:
   apple_price  cherry_price  banana_price        prices  price_fruits  pr_fruits_adjusted
0          100             2             2   apple_price           100                   1
1          100             3             4   apple_price           100                   1
2          200             1             5  cherry_price           100                   1
3          500             0             2  banana_price             2                   2
4          100             2             3  cherry_price             3                   3
5          600             1             5  banana_price             5                   5
6          200             1             3   apple_price           200                   2

标签: pythonpandasfiltercontainsstartswith

解决方案


根据条件对价格进行调整可以这样完成:

fruits['pr_fruits_adjusted'] = np.where((fruits.price_fruits >=100), fruits['price_fruits']/100, fruits['price_fruits']).astype('int32')

您可以根据您的要求更改条件。在这里,我写了一个条件,如果价格大于或等于 100,则应用调整。 fruits.price_fruits >=100


推荐阅读