首页 > 解决方案 > 将“If”样式条件应用于 Pandas 数据框列

问题描述

我正在努力寻找将 if 类型逻辑应用于 pandas 数据帧的最佳方法。

我认为我一直在做的是尝试将我提供的逻辑应用到整个数组,而不是逐行应用数组中的值。但我也试图在没有列表理解或某种循环的情况下做到这一点,因为这将是我试图解释的几个不同的场景......

我正在尝试填充一个新字段 df['Summary Table'] ,然后我可以稍后对不同的聚合进行分组等。

我尝试的第一件事是这样的


tbl_scenarios =[

    # Scenario 1: The town in a row is on the town list
    ((df['Town'] in towns) == True),

    # Scenario 2: If the value in the town column is 'Rural'
    (df['Town'] == 'Rural')

]

以下是我的可能结果列表。如果它在场景 1 的列表中,我希望它只返回它在 df['Town'] 中找到的值,如果场景 2 为真,我希望它返回带有后缀“的“区域”列中的值“: '乡村的”

tbl_results = [df['Town'], str(df['CNA']) + ": Rural"]

下面我试图根据场景从结果列表中选择正确的结果

df['Summary Table'] = np.select(tbl_scenarios, tbl_results, default=0)

我得到了一个值错误,上面说真相是模棱两可的(因为它正在查看整个数组)。然后我尝试了以下作为列表中的参数:

(np.where(df['Town'])in towns)

但看看表格,看起来这个逻辑并不奏效。有任何想法吗?

标签: arrayspandasdataframe

解决方案


推荐阅读