我在熊猫中有以下数据框
cust_id desktop laptop accessories
123 2020-02-22 2020-01-01 0
234 2019-02-02 0 0
211 2020-02-23 0 0
我想要的数据帧如下
cust_id desktop laptop accessories
123 1 1 0
234 1 0 0
211 1 0 0
只要值不为0,就必须将其转换为1。所有列的数据类型均为object
如何在熊猫中做到这一点?
答案 0 :(得分:2)
你可以做
df.update((df.loc[:,'desktop':].astype(str)!='0').astype(int))
df
cust_id desktop laptop accessories
0 123 1 1 0
1 234 1 0 0
2 211 1 0 0
答案 1 :(得分:2)
这对我有用:
df = df.applymap(lambda x: 1 if x != 0 else 0)
输出:
desktop laptop accessories
cust_id
123 1 1 0
234 1 0 0
211 1 0 0
答案 2 :(得分:1)
您也可以使用np.where
:
In [47]: import numpy as np
In [48]: df.desktop = np.where(df.desktop.ne('0'), 1, 0)
In [49]: df.laptop = np.where(df.laptop.ne('0'), 1, 0)
In [50]: df
Out[50]:
cust_id desktop laptop accessories
0 123 1 1 0
1 234 1 0 0
2 211 1 0 0