无条件替换熊猫列中的所有值

时间:2018-09-29 00:31:59

标签: python pandas

我有一个Pandas数据框,其中的列中有我想无条件替换的值。

出于这个问题的目的,让我们假设我不知道该列有多长时间,并且我不想迭代其值。

使用.replace()是不合适的,因为我不知道该列中的值:我想无条件替换所有值。

使用df.loc[<row selection>, <column selection>]是不合适的,因为没有行选择逻辑:我想要所有行并只写True(如data.loc[True, 'ColumnName'] = new_value)将返回KeyError(True,)。我尝试了data.loc[1, 'ColumnName'] = new_value,它确实有效,但实际上看起来像是一个糟糕的解决方案。

如果我知道len()中的data['ColumnName'],则可以创建一个具有该大小的数组,并用我的new_value来充好多时间,然后用该数组替换该列。用10行代码来完成比需要1行代码(有条件地这样做)更简单的事情:这也不行。

如何用1行告诉熊猫:ColumnName中的所有值现在都是new_value?我拒绝相信没有办法告诉熊猫不要让我烦恼。

2 个答案:

答案 0 :(得分:2)

正如我在评论中解释的那样,您无需创建数组。 假设您有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

答案 1 :(得分:1)

import pandas as pd

df = pd.DataFrame(
   {'num1'        : [3, 5, 9, 9, 14, 1],
    'num2'        : [3, 5, 9, 9, 14, 1]},
     index=[0, 1, 2, 3, 4, 5])
print(df)
print('\n')
df['num1'] = 100
print(df)
df['num1'] = 'Hi'
print('\n')
print(df)

输出为

  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