熊猫将值列表更改为列

吉米

我有这样的df,我想将值列表更改为column

```

    uid   device
0   000 [1.0, 3.0]
1   001 [3.0]
2   003 [nan]
3   004 [2.0, 3.0]
4   005 [1.0]
5   006 [1.0]
6   006 [nan]
7   007 [2.0]
```

应该

```

    uid  device      NA  just_1  just_2or3  Both
0   000 [1.0, 3.0]   0     0         0        1
1   001 [3.0]        0     0         1        0
2   003 [nan]        1     0         0        0
3   004 [2.0, 3.0]   0     0        "1"       0
4   005 [1.0]        0     1         0        0
5   006 [1.0]        0     1         0        0
6   006 [nan]        1     0         0        0
7   007 [2.0]        0     1         1        0
8   008 [1.0, 2.0]   0     0         0        1

```

我想更改为虚拟变量,如果设备仅1.0,则将对应的列值设置为1,如果2.0、3.0,[2.0,3.0],则将just_2or3设置为1。

仅当列表中的1.0(例如[1.0,3.0],[1.0,2.0])都设置为1时

我怎样才能做到这一点?谢谢你

耶斯列尔

您可以将自定义函数f与列表推导结合使用,最后将boolean值强制转换为intby astype

df = pd.DataFrame({'uid':['000','001','002','003','004','005','006','007'],
                   'device':[[1.0,3.0],[3.0],[np.nan],[2.0,3.0],
                             [1.0],[1.0],[np.nan],[2.0]]})

print (df)
       device  uid
0  [1.0, 3.0]  000
1       [3.0]  001
2       [nan]  002
3  [2.0, 3.0]  003
4       [1.0]  004
5       [1.0]  005
6       [nan]  006
7       [2.0]  007

def f(x):
    #print (x)
    NA = [np.nan in x][0]
    just_1  = [1 in x and not(2 in x or 3 in x)][0]
    both = [1 in x and (2 in x or 3 in x)][0]
    just_2or3 = [1 not in x and (2 in x or 3 in x)][0]
    return pd.Series([NA, just_1, just_2or3, both], 
                     index=['NA','just_1','just_2or3', 'both'])

print (df.set_index('uid').device.apply(f).astype(int).reset_index())
   uid  NA  just_1  just_2or3  both
0  000   0       0          0     1
1  001   0       0          1     0
2  002   1       0          0     0
3  003   0       0          1     0
4  004   0       1          0     0
5  005   0       1          0     0
6  006   1       0          0     0
7  007   0       0          1     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将熊猫索引更改为列标题

来自分类Dev

将熊猫索引更改为列标题

来自分类Dev

熊猫:使用`loc`将一列布尔值附加到df更改为`int`

来自分类Dev

将列值从1更改为0

来自分类Dev

熊猫:将列的值折叠到列表

来自分类Dev

熊猫:将列的值折叠到列表

来自分类Dev

将Pandas DataFrame值从列表更改为字符串

来自分类Dev

将嵌套的json值列表更改为数组

来自分类Dev

将字典的值类型从列表更改为集合

来自分类Dev

如果将numpy数组更改为列表,然后将列表更改为numpy数组,则值会更改吗?

来自分类Dev

将列表更改为int

来自分类Dev

将列表更改为字典

来自分类Dev

将列表更改为int

来自分类Dev

将列表更改为字典

来自分类Dev

将列值(和类型)更改为pandas Dataframe

来自分类Dev

SQL查询结果集将列值组更改为

来自分类Dev

如何将列中的值更改为伪值

来自分类Dev

将列标题更改为行中的值

来自分类Dev

将熊猫系列更改为int

来自分类Dev

熊猫将nan值从一列更改为另一列的字符串的第一个字母

来自分类Dev

熊猫,如果值在列中,则更改为另一列

来自分类Dev

将str的列表更改为int的列表

来自分类Dev

将列更改为索引

来自分类Dev

大熊猫将列类型更改为datetime afterr group by

来自分类Dev

将熊猫数据框的列值提取到列表中

来自分类Dev

将行转换为熊猫列中的值列表

来自分类Dev

将列表作为熊猫数据框中的列值

来自分类Dev

使用Postwalk将向量更改为列表

来自分类Dev

Python将空列表更改为整数