經過多次嘗試,我開始將我的R腳本遷移到Python。我在R中的大部分工作都涉及數據框架,而我正在使用pandas軟件包中的DataFrame
對象。在我的腳本中,我需要讀取一個csv文件並將數據導入到一個DataFrame
對象中。接下來,我需要將十六進制值轉換爲標記爲DATA
的列,轉換爲按位數據,然後創建16個新列,每位一個。如何將數據幀列拆分爲多列
我的示例性輸入數據在文件test.txt
如下所示,
PREFIX,TEST,ZONE,ROW,COL,DATA
6_6,READ,0,0,0,BFED
6_6,READ,0,1,0,BB7D
6_6,READ,0,2,0,FFF7
6_6,READ,0,3,0,E7FF
6_6,READ,0,4,0,FBF8
6_6,READ,0,5,0,DE75
6_6,READ,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
,我得到以下,
PREFIX測試區ROW COL BINDATA
0 6_6 READ 0 0 0 1011111111101101
1 6_6 READ 0 1 0 1011101101111101
2 6_6 READ 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)。任何幫助將不勝感激。
感謝&問候,
Derric。
你在試圖拆分'BINDATA'列時想到了什麼? –