经过多次催促,我开始将我的 R 脚本迁移到 Python。我在 R 中的大部分工作都涉及数据帧,我使用的DataFrame
是 pandas 包中的对象。在我的脚本中,我需要读取一个 csv 文件并将数据导入到一个DataFrame
对象中。接下来,我需要将十六进制值转换为标记DATA
为按位数据的列,然后创建 16 个新列,每个位一个。
我在文件中的示例输入数据test.txt
如下所示,
前缀、测试、区域、行、列、数据
6_6,读取,0,0,0,BFED
6_6,读取,0,1,0,BB7D
6_6,读取,0,2,0,FFF7
6_6,读取,0,3,0,E7FF
6_6,读取,0,4,0,FBF8
6_6,读取,0,5,0,DE75
6_6,读取,0,6,0,DFFE
我的python脚本test.py
如下,
import glob
import pandas as pd
import numpy as np
fname = 'test.txt'
df = pd.read_csv(fname, comment="#")
dfs = df[df.TEST == 'READ']
# function to convert the hexstring into a binary string
def hex2bin(hstr):
return bin(int(hstr,16))[2:]
# convert the hexstring in column DATA to binarystring ROWDATA
dfs['BINDATA'] = dfs['DATA'].apply(hex2bin)
# get rid of the column DATA
del dfs['DATA']
当我运行此脚本并检查对象dfs
时,我得到以下信息,
前缀测试区行 COL BINDATA
0 6_6 读取 0 0 0 1011111111101101
1 6_6 读取 0 1 0 1011101101111101
2 6_6 读取 0 2 0 1111111111110111
3 6_6 读取 0 3 0 1110011111111111
4 6_6 读取 0 4 0 1111101111111000
5 6_6 读取 0 5 0 1101111001110101
6 6_6 读取 0 6 0 1101111111111110
所以现在我不确定如何将命名的列拆分BINDATA
为 16 个新列(可以命名为 B0、B0、B2、....、B15)。任何帮助将不胜感激。
感谢和问候,
德里克。