Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 列的二进制字符串中每个数字的模式_Python_Pandas - Fatal编程技术网

Python 列的二进制字符串中每个数字的模式

Python 列的二进制字符串中每个数字的模式,python,pandas,Python,Pandas,我想在一列的二进制字符串中找到每个数字的模式值。假设我有以下数据 df = pd.DataFrame({'categories':['A','B','C'],'values':['001','110','111']}) 我的数据是这样的 categories values A 001 B 110 C 111 如果在A、B和C的第一位(0, 1, 1)分别考虑列“值”,则模式值为1。如果我们对其他数字也这样做,我的预

我想在一列的二进制字符串中找到每个数字的模式值。假设我有以下数据

df = pd.DataFrame({'categories':['A','B','C'],'values':['001','110','111']})
我的数据是这样的

categories    values
A             001
B             110
C             111

如果在A、B和C的第一位(0, 1, 1)分别考虑列“值”,则模式值为1。如果我们对其他数字也这样做,我的预期输出应该是111


我可以找到特定列的模式值。如果我将每个位拆分为一个新列并找到模式值。我可以稍后通过连接得到预期的输出。然而,当数据有更多的二进制字符串列时,我不确定这种方法是否仍然是一种好方法。我正在寻找更优雅的方法来做这件事。我可以听听你的建议吗?

我想你可以使用
应用
系列
列表
数字
转换为列,然后:

最后选择行,创建
列表
加入

print (''.join(df1.iloc[0].tolist()))
111
df = pd.DataFrame({'categories':['A','B','C', 'D'],'values':['001','110','111', '000']})
print (df)
  categories values
0          A    001
1          B    110
2          C    111
3          D    000

print (pd.DataFrame([list(x) for x in df['values']]).mode())
   0  1  2
0  0  0  0
1  1  1  1

df1 = pd.DataFrame([list(x) for x in df['values']]).mode().apply(''.join, axis=1)
print (df1)
0    000
1    111
dtype: object
另一种可能的解决方案是
列表理解

df = pd.DataFrame([list(x) for x in df['values']])
print (df)
   0  1  2
0  0  0  1
1  1  1  0
2  1  1  1
如果输出是
数据帧
,则可以使用
应用
加入

print (''.join(df1.iloc[0].tolist()))
111
df = pd.DataFrame({'categories':['A','B','C', 'D'],'values':['001','110','111', '000']})
print (df)
  categories values
0          A    001
1          B    110
2          C    111
3          D    000

print (pd.DataFrame([list(x) for x in df['values']]).mode())
   0  1  2
0  0  0  0
1  1  1  1

df1 = pd.DataFrame([list(x) for x in df['values']]).mode().apply(''.join, axis=1)
print (df1)
0    000
1    111
dtype: object