解析字符串作为过滤熊猫数据框的条件

yabchexu

嗨,我有一个熊猫数据框,我有A列。

data = pandas.DataFrame()
data['A']= [numpy.random.choice([1,2,3,4,5,6]) for i in range(10)]

我想在A上添加B列条件(当A = 1时B = 0,当A> 5则B = 1时),而不是使用:

data.loc[data['A']==1,'B']=0
data.loc[data['A']>5, 'B']=1

在这里,我想创建一个函数来执行此操作,以条件作为dict:{'A = 1':0,'A> 5':1},因此我可以使用add_column({'A = 1':0,' A> 5':1},'B')执行上面的代码。我认为与运营商打交道比较棘手,有什么好主意吗?

def add_column(condition_dict, NewColumnName):
    pass
学生

尽管可能有有效的方法来实现,但一种可能的方法可能是使用eval功能。

创建输入df

import pandas as pd
import numpy as np

data = pd.DataFrame()
data['A']= [np.random.choice([1,2,3,4,5,6]) for i in range(10)]
print(data)

输入df

   A
0  4
1  3
2  3
3  1
4  1
5  2
6  3
7  6
8  2
9  1

现在,一个函数被创建,使得它iterates经过的每一行dataframecondition_dictrow评估匹配value存储在列表中相应的这对更新的行new column如果没有条件匹配,则默认情况下None

def add_column(df, condition_dict, NewColumnName):
    new_values = []
    for index, row in df.iterrows():
        # if none of the condition matches then put default value
        default_value = None
        # iterate through each condition to check if any matches
        for key, value in condition_dict.items():
            expression = 'row.' + key
            if(eval(expression)):
                default_value = value
        # add corresponding rows new value for new column        
        new_values.append(default_value)

    df[NewColumnName] = new_values

现在,调用该函数:

add_column(data, {'A==1':0, 'A>5':1}, 'B')
print(data)

输出:

   A    B
0  4  NaN
1  3  NaN
2  3  NaN
3  1  0.0
4  1  0.0
5  2  NaN
6  3  NaN
7  6  1.0
8  2  NaN
9  1  0.0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过字符串末尾过滤熊猫数据框

根据完全匹配的字符串过滤熊猫数据框

如何通过字符串过滤熊猫数据框?

根据条件熊猫过滤数据帧(字符串拆分)

根据条件熊猫数据框列删除字符串

将字符串转换为熊猫数据框的条件

过滤特定字符串的数据框

根据条件在熊猫数据框列中的特殊字符上拆分字符串

过滤熊猫数据框列中的字符串/浮点数/整数值

无法根据子字符串集过滤熊猫数据框

如何过滤包含字符串和浮点数的熊猫数据框?

根据列表中的部分字符串过滤熊猫(python)数据框

如何根据列表从熊猫数据框中过滤子字符串?

使用基于部分字符串匹配的熊猫在python中过滤数据框

如何使用多个部分字符串过滤熊猫数据框?

为什么熊猫数据框将所有内容作为字符串返回?

如何在熊猫数据框中使用字符串作为列名

如何从熊猫数据框中获取单个值作为字符串

熊猫-使用数据框值作为字符串填充列表

熊猫数据框:保存并读取Excel工作表 将整数作为字符串处理

“未知的字符串格式”-解析熊猫数据框中的URL时出错

如何解析熊猫数据框列中的字符串计算

如何有条件地替换熊猫数据框列中的子字符串?

如何在熊猫数据框中按字符串值的条件删除行?

如何根据熊猫数据框中的字符串值使用 where 条件?

如何有条件地编辑熊猫数据框中的字符串?

将字符串评估为条件并应用于熊猫数据框

根据条件替换熊猫数据框列中的部分整数或字符串

VBA按字符串数组过滤作为条件