如何在不拆分具有不同条件的数据框的情况下执行公式

熊猫

我有以下数据框

import pandas as pd
d = {

    'ID':[1,2,3,4,5],
    'Price1':[5,9,4,3,9],
    'Price2':[9,10,13,14,18],
     'Type':['A','A','B','C','D'],


}
df = pd.DataFrame(data = d)
df

对于无条件应用公式,我使用以下代码

df = df.eval(
 'Price = (Price1*Price1)/2'
)
df

如何在不拆分具有不同条件的数据框的情况下执行公式

需要一个名为Price_on_type的新列

每种类型的公式都不同

对于类型A,Price_on_type = Price1 + Price1的公式

对于类型B,Price_on_type =(Price1 + Price1)/ 2的公式

对于类型C,Price_on_type = Price1的公式

对于类型D,Price_on_type = Price2的公式

预期产量:

import pandas as pd
d = {

    'ID':[1,2,3,4,5],
    'Price1':[5,9,4,3,9],
    'Price2':[9,10,13,14,18],
    'Price':[12.5,40.5, 8.0, 4.5, 40.5],
     'Price_on_type':[14,19,8.0,3,18],


}
df = pd.DataFrame(data = d)
df
耶斯列尔

您可以使用numpy.select

masks = [df['Type'] == 'A',
         df['Type'] == 'B',
         df['Type'] == 'C',
         df['Type'] == 'D']

vals = [df.eval('(Price1*Price1)'),
        df.eval('(Price1*Price1)/2'),
        df['Price1'],
        df['Price2']]

要么:

vals = [df['Price1'] + df['Price2'],
        (df['Price1'] + df['Price2']) / 2,
        df['Price1'],
        df['Price2']]

df['Price_on_type'] = np.select(masks, vals)
print (df)
   ID  Price1  Price2 Type  Price_on_type
0   1       5       9    A           14.0
1   2       9      10    A           19.0
2   3       4      13    B            8.5
3   4       3      14    C            3.0
4   5       9      18    D           18.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不合并的情况下将具有不同列的数据框合并?

如何在不更改顺序的情况下合并具有相同行名(和列名)的多个数据框?

如何在不导入每个类的情况下创建具有不同类的 python 包

如何在不使用子查询的情况下选择具有where条件的不同记录

如何在不更改全局打印选项的情况下显示数据框的所有列?

如何在没有for循环的情况下使用不同的数据框创建列

如何在给定具有条件的数据帧的情况下改变列?

如何在不丢失数据框名称的情况下加入数据框

如何在有条件的情况下让表格单元执行两种不同的筛选?

如何在不破坏SOLID的情况下从具有不同类型的表中获取记录

如何在不编写丑陋代码的情况下,在具有不同机会的多个选项之间进行选择

Hadoop如何在不丢失数据完整性的情况下拆分文件?

如何在不触发“打印对话框”的情况下执行SSRS URL操作?

如何在不预先拆分的情况下使用带有 string.format 的元组

如何在不访问数据库的情况下创建具有延迟字段的Django模型实例?

如何在不更改收集数据的情况下使Meteor模板帮助程序具有反应性

如何在有条件的情况下遍历 Pandas 数据框?(对 iterrows/for 循环/矢量化的困惑)

Matlab:如何在不扩展基础数据类型的情况下执行定点算术?

如何在不执行mysql db query的情况下从缓存中获取数据

熊猫如何在不丢失列标题的情况下合并两个数据框

如何在不写入文件的情况下从数据框中获取 HTML?

如何在不创建新列的情况下增加数据框中的值?

如何在不覆盖的情况下替换 R 数据框中的值?

如何在不遍历行的情况下丢弃 Pandas 数据框中的异常值?

如何在不循环的情况下将python JSON列表转换为数据框列

如何在不循环的情况下替换数据框中每个单元格的值

如何在不更改行数和列数的情况下从矩阵创建数据框?

如何在不更改格式的情况下从稀疏数据框中删除行

如何在没有视框的情况下缩放具有高宽比和位置的控件?