多くの提案の後、私は R スクリプトを Python に移行し始めています。R での作業のほとんどはデータ フレームに関係しておりDataFrame
、pandas パッケージのオブジェクトを使用しています。私のスクリプトでは、csv ファイルを読み込んで、データをDataFrame
オブジェクトにインポートする必要があります。次に、16 進数値をDATA
ビット単位のデータにラベル付けされた列に変換し、ビットごとに 1 つずつ、16 個の新しい列を作成する必要があります。
ファイル内の入力データの例test.txt
は次のようになります。
プレフィックス、テスト、ゾーン、行、列、データ
6_6,読み取り,0, 0, 0,BFED
6_6,READ,0,1,0,BB7D
6_6,READ,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
、次のようになります。
プレフィックス テスト ゾーン ROW 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という名前にすることができます)。どんな助けでも大歓迎です。
ありがとうございます。それでは、お元気で、
デリック。