首页 > 解决方案 > 在df pandas中将数字AB分开到A和B

问题描述

我有一个 df,其中一些数据放在一些字节中。我的问题是,在框架内为切换功能保留了两个位,这对我来说无关紧要,但它会影响我任务的最终结果。

字节帧如下所示:

Start bit  0 1 2 3 4 5 6 7 
    0      A A A A A A A A 
    8      A A 
   16      B B B B B B B B   
   24      B B         C C

C represents the toggle

我的 df 看起来像这样:

A   A   B   B
BA  00  11  02
BA  00  11  02
BA  00  11  42
BA  00  11  42
BA  00  11  82
BA  00  11  82
BA  00  11  C2
BA  00  11  C2
BA  00  11  02
BA  00  11  02

我可以从 B 看到第二个字节的第一部分是循环的,这意味着第二个数字是切换。我猜还是我错了?之后,这个数字 (2) 在我的 df 中变为 1,然后变为 0。

有没有一种方法可以转换、分离或消除第二个数字,或者只取第一个数字(本例为 0)。例如。02 --> 0 和 2 只取 0。我的 df 之后是一个与 0 不同的数字,但 0、4、8 和 C 是连续的,不管怎样,2 也稍后变为 1,然后是 0。:)

标签: pythonpandas

解决方案


对于那些寻找答案的人,我咨询了我的枕头,我们同意尝试以下实际可行的方法:

所以在把这样的字节放在一起之后:

df['A'] = df.iloc[:,1] + '' + df.iloc[:,0]    #Dominant byte is the second position
df['B'] = df.iloc[:,3] + '' + df.iloc[:,2]

输出:

  A       B
00BA    0211  
00BA    0211  
00BA    4211  
00BA    4211  
00BA    8211  
00BA    8211  
00BA    C211  
00BA    C211  
00BA    0211  
00BA    0211  

我做了以下事情:

df['B'] = df['B'].str[1:] #Only take the last three digits of the array

输出:

 A       B
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211  
00BA    211 

推荐阅读