일반적으로 명명 된 bytearray 필드에 팬더 배열을 결합하는 방법에 대한 아이디어가 있습니까? 소스의 필드 (Teradata)는 실제 ByteArray이며 Teradata Side에서는 Teradata 외부에서 사용할 수있는 문자 나 다른 것을 사용할 수 없습니다.)팬더 : ByteArray의 열에 병합
Teradata Export는 팬더의 배열을 아름답게 읽습니다. 하지만 일반적으로 이름이 지정된 필드 (DatabaseId)가있는 두 테이블을 병합 할 수는 없습니다.이 필드는 bytearray입니다.
merge1 = pd.merge(tvm, dbase, on="DatabaseId")
내가의 오류 얻을 :
나는 간단한 병합을 시도 할 때
가 (모두 PD로 팬더와 itertools 수입)
TypeError: type object argument after * must be a sequence, not itertools.imap
를 I에 유래를 검색하여 발견 a similar problem for joining on a cell containing a collection
dbase['DBID'] = dbase.DatabaseId.apply(lambda r: type(sorted(r.iteritems())))
모든 대 Varchar이다
AttributeError: 'bytearray' object has no attribute 'iteritems'
UPDATE 데이터 의
예 데이터 팬더를 통해 수집 테라 데이타에서 나오는
dbase = pd.read_sql('select databaseid, databasename from ud812.dbase sample 10', conn)
conn is a connection to a teradata database
데이터 형식을 사용하여 :
는하지만 오류를 얻을 수 열 제외 :
DatabaseID = bytearray (Byte(4))
TVMID = bytearray (Byte(4))
>>> dbase.dtypes
DatabaseId object
DatabaseName object
dtype: object
>>> dbase
DatabaseId DatabaseName
0 [2, 0, 243, 185] PCDW_CRS_BBCONV3_TB
1 [2, 0, 168, 114] PAMLIF_TB
2 [2, 0, 133, 153] PADW_PRESN_TB
3 [2, 0, 29, 184] CEDW_MOBILE_TB
4 [2, 0, 190, 183] CEDW_MODEL_SCORE_TB
5 [2, 0, 71, 55] PBBBAM_TB
6 [2, 0, 169, 183] CEDW_OCC_TB
7 [2, 0, 201, 183] CCDW_DGTL_DEAL_TB
8 [0, 0, 139, 8] PRECDSS_TB
9 [2, 0, 142, 203] CDBDW_TB
>>>
>>>
>>> tvm.dtypes
TVMId object
DatabaseId object
TVMName object
TableKind object
CreateText object
dtype: object
>>> tvm
TVMId DatabaseId TVMName \
0 [230, 1, 41, 11, 0, 0] [2, 0, 67, 183] JCP_03538_112002
1 [214, 1, 60, 133, 0, 0] [2, 0, 186, 52] STL_AUTHNCTD_RULE_EXECN
2 [193, 2, 59, 48, 0, 0] [2, 0, 225, 150] uye177_Xsell_EM_OPCL_TB2
3 [0, 2, 235, 154, 0, 0] [2, 0, 244, 181] PL_CALCD_INVSTR_MTHLY_HIST_ST
4 [255, 1, 131, 76, 0, 0] [2, 0, 110, 63] IMH867_AVA0803_SNAP
5 [125, 1, 217, 138, 0, 0] [2, 0, 237, 153] FD_ACCT_STMT_ADR_ST
6 [224, 0, 80, 233, 0, 0] [2, 0, 243, 127] EXP_SRCH_RSLT_DESC
7 [208, 1, 72, 15, 0, 0] [2, 0, 8, 57] SGI_PAY_DENIED_SEP_112012
8 [246, 0, 27, 61, 0, 0] [2, 0, 143, 130] CR_INDIVD
9 [186, 1, 242, 167, 0, 0] [0, 0, 244, 18] wzu448_sb_apps
TableKind CreateText
0 T None
1 V CREATE VIEW ... ... ... ... ... ... ... ... ...
2 T None
3 V CREATE VIEW ... ... ... ... ... ... ... ... ...
4 T None
5 V CREATE VIEW ... ... ... ... ... ... ... ... ...
6 V CREATE VIEW ... ... ... ... ... ... ... ... ...
7 V CREATE VIEW ... ... ... ... ... ... ... ... ...
8 V CREATE VIEW ... ... ... ... ... ... ... ... ...
9 T None
'tvm'의 유형은 무엇입니까? 데이터 샘플을 제공 할 수 있습니까? –
글쎄, FROM_BYTES 함수를 사용하여 BYTE를 문자열로 변환 할 수 있습니다. LPAD (선행 0은 무시 됨)와 TRANSLATE (결과는 유니 코드)와 CAST (LPAD는 VARCHAR (32000)을 반환해야하기 때문에 추악한 구문입니다 : CAST (LPAD (FROM_BYTES (tvmid, 'Base16') , 12, '0') USING unicode_to_latin) AS VARCHAR (12) '(** 12 **는 바이트 수의 두 배입니다.) – dnoeth