Python Панды, ЕСЛИ И заявление

#python #pandas

Вопрос:

Это может показаться очень простым вопросом, но у меня возникли трудности с добавлением оператора if и для панд python. До сих пор это мой код:

 import pandas as pd
df = pd.DataFrame({
    'C1': ["True","False","False","True"],
    'C2':  ["True","True","False","True"],
})
print(df) 
 

Я ищу, чтобы создать новый столбец с именем C3 в моем фрейме данных. В этом столбце будет указано «True», если соответствующие значения в той же строке для столбцов C1 и C2 также являются «True»
. И если значения в одной и той же строке оба не являются истинными для столбцов C1 и C2, то значение в C3 будет означать «False».

Спасибо за помощь.

Комментарии:

1. Что вы пробовали до сих пор, основываясь на своих собственных исследованиях, и что пошло не так в ваших попытках?

Ответ №1:

Вы можете попробовать это:

 df['C3'] = df['C1'].eq('True') amp; df['C2'].eq('True')

      C1     C2     C3
0   True   True   True
1  False   True  False
2  False  False  False
3   True   True   True
 

Ответ №2:

Преобразуйте строку в логическое значение для удобства работы:

 df['C3'] = df.apply(pd.eval).all(axis=1).astype(str)
 

Или,

 df['C3'] = df.replace({'True': True, 'False': False}).all(axis=1).astype(str)
 

Наконец, преобразуйте обратно в строку для получения желаемых результатов.

Результат:

 print(df)

      C1     C2     C3
0   True   True   True
1  False   True  False
2  False  False  False
3   True   True   True
 

Ответ №3:

 def apply_func(df):
    val1 = True if df.C1 == "True" else False
    val2 = True if df.C2 == "True" else False
    return val1 and val2

df["C3"] = df.apply(apply_func, axis=1)
 

Вы можете использовать функцию для обработки значений. Мне пришлось преобразовать строки в логические значения, прежде чем использовать их.

Ответ №4:

 import pandas as pd
df = pd.DataFrame({
    'C1': ["True","False","False","True"],
    'C2':  ["True","True","False","True"],
})
df['C3'] = df.apply(lambda row: row['C2'] == "True" and row['C1'] == "True", axis = 1)
print(df)
 

Ответ №5:

А как насчет панд?Серия.где?.

 mask = df['C1'].eq('True') amp; df['C2'].eq('True')
df['C3'] = df['C1'].where(cond=mask, other='False')
 

Выход:

      C1      C2      C3
0   True    True    True
1   False   True    False
2   False   False   False
3   True    True    True