Python数据框:更改数据框的指定列的值

时间:2018-09-28 09:31:18

标签: python pandas dataframe

我有以下Dataframe对象df:

    A        B         C       
0  0.0      5.0       0.0        
1  0.0      6.0       0.0        
2  0.0      9.0       0.0        
3  0.0      0.0       0.0        
4  0.0      2.0       0.0        
5  0.0      5.0       0.0        
6  6.0      0.0       0.0        
7  0.0      0.0       0.0        
8  0.0      1.0       0.0        

我要更改“ B”列的值:

如果该值小于3,则该值应替换为'False'。

否则,该值应替换为“ True”。

我尝试过:

df['B'] = df['B'].apply(lambda x: [False if y < 3 else True for y in x])

在这种情况下,我得到TypeError:“ float”对象不可迭代。

当我将其用于整个数据框时,它仍然可以工作:

df = df.apply(lambda x: [False if y < 3 else True for y in x])

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

使用直接比较或将ge用作:

df['B'] = df['B']>=3

OR

df['B'] = df['B'].ge(3)

print(df)

     A      B    C
0  0.0   True  0.0
1  0.0   True  0.0
2  0.0   True  0.0
3  0.0  False  0.0
4  0.0  False  0.0
5  0.0   True  0.0
6  6.0  False  0.0
7  0.0  False  0.0
8  0.0  False  0.0

答案 1 :(得分:1)

简单地为:

>>> import pandas as pd
>>> df = pd.DataFrame([1,2,3,4], columns=["data"])
>>> df["B"] = df["data"] > 2
>>> df
   data      B
0     1  False
1     2  False
2     3   True
3     4   True
>>>

您甚至可以使用numpy进行条件比较,如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame([1,2,3,4], columns=["A"])
>>> df["B"] = np.where(df["A"] <2, "False", "True")
>>> df
   A      B
0  1  False
1  2   True
2  3   True
3  4   True

答案 2 :(得分:1)

下面的代码可能会帮助您使用方法,当apply方法在列中使用时,它将获取该列的所有值,因此我不认为在这里使用for循环

df['b'] = df['b'].apply(lambda x: True if x>3 else False)

答案 3 :(得分:0)

df.loc[df.B > 3, 'new'] = True
df.loc[df.B < 3,'new'] = False
df = df.drop("B", axis=1)
df = df.rename(columns={"new": "B"})