Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫获取给定字符串的1和0序列_Python_Pandas - Fatal编程技术网

Python 熊猫获取给定字符串的1和0序列

Python 熊猫获取给定字符串的1和0序列,python,pandas,Python,Pandas,鉴于以下情况: import pandas as pd df = pd.DataFrame({'a':['K','1','1,2,3']}) df a 0 K 1 1 2 1,2,3 我想将a列中的值转换为对应的1和0序列,给定此映射: K 1 2 3 4 5 1 1 1 1 1 1 如果存在值,则用1代替0。 如果该值不存在,则该位置由0保留。 如果不存在值,则序列将是一个60的字符串 所以“K”应该是: 十万 “1,2,3”是: 011100 预期结果

鉴于以下情况:

import pandas as pd
df = pd.DataFrame({'a':['K','1','1,2,3']})
df
       a
0      K
1      1
2  1,2,3
我想将a列中的值转换为对应的1和0序列,给定此映射:

K 1 2 3 4 5
1 1 1 1 1 1
如果存在值,则用1代替0。 如果该值不存在,则该位置由0保留。 如果不存在值,则序列将是一个60的字符串

所以“K”应该是: 十万

“1,2,3”是: 011100

预期结果:

       a       b
0      K  100000
1      1  010000
2  1,2,3  011100
我尝试了
pd.get_dummies(df['a'])
,但它只适用于单元格中只有1个字符的情况


提前谢谢

我希望我能很好地理解您的问题,但您可以将
.apply()
与自定义映射一起使用:

m = {'K': 1 << 0,
     '1': 1 << 1,
     '2': 1 << 2, 
     '3': 1 << 3,
     '4': 1 << 4,
     '5': 1 << 5}
    
df['b'] = df.a.apply(
        lambda x: '{:06b}'.format(sum(m[v] for v in x.split(',')))[::-1]
    )
print(df)

让我们试试
get_dummies
然后
reindex

s = df.a.str.get_dummies(',').reindex(columns=['K','1','2','3','4','5'],fill_value=0).astype(str).agg(''.join,1)
0    100000
1    010000
2    011100
dtype: object
df['b'] = s

你能详细说明一下映射是如何工作的吗?从目前的描述来看,我不明白它是如何工作的;请参阅已编辑的问题。如果我希望第二行的“1”改为这样的“3”,该怎么办?030000而不是010000?@DanceParty2你能解释更多吗?是否只希望第二行中的此值具有
3
而不是
1
?是的,没错。1,2,3将生成031100。新问题发布在此处:
s = df.a.str.get_dummies(',').reindex(columns=['K','1','2','3','4','5'],fill_value=0).astype(str).agg(''.join,1)
0    100000
1    010000
2    011100
dtype: object
df['b'] = s