Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何用特定值替换列的值?_Python_Pandas_Dataframe_Numpy_Replace - Fatal编程技术网

在python中,如何用特定值替换列的值?

在python中,如何用特定值替换列的值?,python,pandas,dataframe,numpy,replace,Python,Pandas,Dataframe,Numpy,Replace,我是新来的熊猫,我面临着更换的问题。因此,我创建了一个函数,它根据参数替换数据帧列的值。条件是它应该用一个值替换列的所有值,如下所示: 虽然我试图得到一个错误“长度不匹配” def replace(df,column,condition): for i in column: for j in condition: df[i]=j return df column = ['A'

我是新来的熊猫,我面临着更换的问题。因此,我创建了一个函数,它根据参数替换数据帧列的值。条件是它应该用一个值替换列的所有值,如下所示: 虽然我试图得到一个错误“长度不匹配”

    def replace(df,column,condition):
          for i in column:
              for j in condition:
                   df[i]=j
          return df
    column = ['A','C']
    condition = 11,34
    df
        A  B  C 
     0  12 5  1
     1  13 6  5
     2  14 7  7
    replace(df,column,condition)

my excepted output:

        A  B  C 
     0  11 5  34
     1  11 6  34
     2  11 7  34

使用key:value对,将条件和列转换为dict,解包并分配值

df.assign(**dict(zip(column, condition)))

使用key:value对,将条件和列转换为dict,解包并分配值

df.assign(**dict(zip(column, condition)))

编辑:我最初建议使用
apply
,但后来意识到这是不必要的,因为您忽略了系列中的现有值。这更简单,应该符合您的目的

例如:

import pandas as pd

data = [[12, 5, 1], [13, 5, 5], [14, 7, 7]]
df = pd.DataFrame(data, columns = ["A", "B", "C"])

def replace(df, columns, values):
    for one_column, one_value in zip(columns, values):
        df[one_column] = one_value

    return df

print(replace(df, ["A", "C"], [11, 34]))
输出:

    A  B   C
0  11  5  34
1  11  5  34
2  11  7  34

编辑:我最初建议使用
apply
,但后来意识到这是不必要的,因为您忽略了系列中的现有值。这更简单,应该符合您的目的

例如:

import pandas as pd

data = [[12, 5, 1], [13, 5, 5], [14, 7, 7]]
df = pd.DataFrame(data, columns = ["A", "B", "C"])

def replace(df, columns, values):
    for one_column, one_value in zip(columns, values):
        df[one_column] = one_value

    return df

print(replace(df, ["A", "C"], [11, 34]))
输出:

    A  B   C
0  11  5  34
1  11  5  34
2  11  7  34

现在.apply(lambda:一个值)做什么?Ohh完成了,感谢它工作良好
apply
允许您使用序列的现有内容来计算新值。例如,如果要将序列中的每个数字乘以2,则此选项是合适的。在您的情况下,您不关心序列的现有内容,因此
apply
是一种过分的做法。感谢您的解释。现在做什么。apply(lambda:one_值)做什么?Ohh做得很好,感谢它工作正常
apply
允许您使用序列的现有内容来计算新值。例如,如果要将序列中的每个数字乘以2,则此选项是合适的。在您的情况下,您不关心本系列的现有内容,因此
apply
太过分了。谢谢您的解释