Python Dataframe: изменить значения указанного столбца Dataframe - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующий объект 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' не повторяется.

Когда я использую его для всего Dataframe, он работает, хотя:

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

Любая помощь будет оценена.

Ответы [ 4 ]

0 голосов
/ 28 сентября 2018

Код ниже может помочь вашему подходу, когда метод apply используется в столбце, тогда он получает все значения этого столбца, так что я не думаю, что использовать для цикла здесь

df['b'] = df['b'].apply(lambda x: True if x>3 else False)
0 голосов
/ 28 сентября 2018
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"})
0 голосов
/ 28 сентября 2018

просто как:

>>> 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
0 голосов
/ 28 сентября 2018

Используйте прямое сравнение или ge как:

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

ИЛИ

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...