在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
太过分了。谢谢您的解释