Python 无条件替换列中的所有值
我有一个Pandas dataframe,其中有一列要无条件地替换为另一列的值 对于这个问题,让我们假设我不知道这个列有多长,也不想迭代它的值 使用Python 无条件替换列中的所有值,python,pandas,Python,Pandas,我有一个Pandas dataframe,其中有一列要无条件地替换为另一列的值 对于这个问题,让我们假设我不知道这个列有多长,也不想迭代它的值 使用.replace()是不合适的,因为我不知道该列中有哪些值:我希望无条件地替换所有值 使用df.loc[,]是不合适的,因为没有行选择逻辑:我想要所有的行并简单地写入True(如data.loc[True,'ColumnName']=new_value)返回KeyError(True,)。我尝试了data.loc[1,'ColumnName']=ne
.replace()
是不合适的,因为我不知道该列中有哪些值:我希望无条件地替换所有值
使用df.loc[,]
是不合适的,因为没有行选择逻辑:我想要所有的行并简单地写入True(如data.loc[True,'ColumnName']=new_value
)返回KeyError(True,)
。我尝试了data.loc[1,'ColumnName']=new_value
,它可以工作,但看起来确实是个糟糕的解决方案
如果我知道data['ColumnName']
的len()
,我可以创建一个这样大小的数组,用我的new\u值的尽可能多的时间来填充,然后简单地用该数组替换该列。10行代码来做一些比需要1行代码(有条件地这样做)更简单的事情:这也是不好的
如何在一行中告诉熊猫:ColumnName
中的所有值现在都是new\u value
?我不相信有任何方法可以告诉熊猫不要用条件来打扰我。正如我在评论中解释的,你不需要创建数组。
假设您有df
:
InvoiceNO Month Year Size
0 1 1 2 7
1 2 1 2 8
2 3 2 2 11
3 4 3 2 9
4 5 7 2 8.5
..您想将InvoiceNO
中的所有值更改为1234
:
df['InvoiceNO'] = 1234
输出:
InvoiceNO Month Year Size
0 1234 1 2 7
1 1234 1 2 8
2 1234 2 2 11
3 1234 3 2 9
4 1234 7 2 8.5
输出是
num1 num2
0 3 3
1 5 5
2 9 9
3 9 9
4 14 14
5 1 1
num1 num2
0 100 3
1 100 5
2 100 9
3 100 9
4 100 14
5 100 1
num1 num2
0 Hi 3
1 Hi 5
2 Hi 9
3 Hi 9
4 Hi 14
5 Hi 1
数据['ColumnName']=新值
?否。df['ColumnName']=新的_值。复数的这需要一个大小正确的数组。我只有值,没有数组。我可以创建数组new_values=[new value,new value,new value],但是。。。如果只有一个值,为什么还要创建数组呢?将new_值
指定给序列会自动确保序列对象的每个元素都用新值更新。您在什么样的环境中工作?这是一个看起来很奇怪的语法错误,@VishnuKunchur的答案正是解决这个问题的方法。在将所有这些片段整合到生产中之前,使用Jupyter笔记本测试并记录您的代码。
num1 num2
0 3 3
1 5 5
2 9 9
3 9 9
4 14 14
5 1 1
num1 num2
0 100 3
1 100 5
2 100 9
3 100 9
4 100 14
5 100 1
num1 num2
0 Hi 3
1 Hi 5
2 Hi 9
3 Hi 9
4 Hi 14
5 Hi 1