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