pandas 使用条件修改列

vi4fp9gy  于 2023-03-16  发布在  其他
关注(0)|答案(2)|浏览(134)

我正在尝试修改一个数据框中的一列。我有两列,分别命名为“人口”和“普查”。我有数百万的数据,我只需要修改那些“人口〈普查”。这里是一个非常精简的数据框。

dataframe1 = pd.DataFrame()

Population = [34,2,1,4542,422,122,55,7876,45,23,1,3]
Census = [12,43,14,6545,63,123,654,33,123,12,99,88]

它是随机放置的,但它可以解释
我想修改列'普查'。这里我尝试。

a['Census'] = np.where[a['Population']<a['Census'], a['Population'], 1]

但是我得到一个TypeError:“function”对象不可订阅。
如何在同一列中进行修改?

q9yhzks0

q9yhzks01#

在np之后,你应该使用'('而不是'['。这是一个函数,这就是为什么它不能像错误中提到的那样是可订阅的。你能检查一下这个吗?

dataframe1["new"] =  np.where(dataframe1['population']<dataframe1["census"], dataframe1["population"], 1)
2wnc66cl

2wnc66cl2#

实际上,np.where是一个函数,所以你必须使用np.where(...),或者,你也可以使用DataFrame.where代替Numpy.where

a['Census'] = a['Census'].where(a['Population'] < a['Census'], other=1)
print(a)

# Output
    Population  Census
0           34       1
1            2      43
2            1      14
3         4542    6545
4          422       1
5          122     123
6           55     654
7         7876       1
8           45     123
9           23       1
10           1      99
11           3      88

输入数据:

a = pd.DataFrame({'Population': Population, 'Census': Census})
print(a)

# Output
    Population  Census
0           34      12
1            2      43
2            1      14
3         4542    6545
4          422      63
5          122     123
6           55     654
7         7876      33
8           45     123
9           23      12
10           1      99
11           3      88

相关问题