更改熊猫数据框中的列值

时间:2018-06-27 17:34:38

标签: python-3.x pandas

我想更改数据框中的Cabin列的值。

这是我的数据框:

enter image description here

我想将值分配为1,其中Cabin不等于0。这意味着C85, C123, E46的值应为1,其余值应相同。

这是代码,但是出现数值错误。

if df_train.Cabin != 0:
   df_train.Cabin = 1
else:
   df_train.Cabin = 0

3 个答案:

答案 0 :(得分:2)

只需使用df.apply

df_train["new_Cabin"] = df_train["Cabin"].apply(lambda x: x != "0").astype(int)

或更简单:

df["new_Cabin"] = (df_train["Cabin"] != "0").astype(int)

答案 1 :(得分:1)

尝试np.where

df['newCabin'] = np.where(df['cabin'] != 0, 1, df['cabin'])

print(df)
cabin newCabin
    0        0
  C85        1
    0        0
 C123        1
    0        0
    0        0

如果您不想再增加一列,那么您也可以这样做

df['cabin'] = np.where(df['cabin'] != 0, 1, df['cabin'])
print(df)
cabin
    0
    1
    0
    1
    0
    0

答案 2 :(得分:0)

应该起作用的简单oneliner

SELECT due_date
FROM   payments_payment 
WHERE  payments_payment.due_date + interval '5 day' < current_date
AND payments_payment.status = 1