データフレームにhexデータがある場合、カラムを指定してを指定して10進数に変換することはできるのですが、できればpythonで自動検出、自動変換させたいので、ご存知の方ご存知の方おられましたらご教示をお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/25 04:58
回答3件
0
python
1import pandas as pd 2 3df = pd.DataFrame({ 4 'a': [1, 2, 3], 5 'b': ['1C8', '0C3A', '9F07D2'], 6 'c': [12.3, 66.7, 84.5], 7 'd': ['Hello', 'Hi', 'Bye'], 8}) 9 10def hex_to_int(s): 11 try: 12 return int(s, base=16) 13 except: 14 return s 15 16dfx = df.applymap(hex_to_int) 17 18print(f'df: \n{df}') 19print(f'\ndfx: \n{dfx}') 20 21# 22df: 23 a b c d 240 1 1C8 12.3 Hello 251 2 0C3A 66.7 Hi 262 3 9F07D2 84.5 Bye 27 28dfx: 29 a b c d 300 1 456 12.3 Hello 311 2 3130 66.7 Hi 322 3 10422226 84.5 Bye
投稿2022/04/25 03:21
総合スコア19618
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/25 04:58
2022/04/25 09:48
2022/05/03 03:30
0
自己解決
melianさんからのアドバイスに飛びついてしまったのですが、
y_waiwaiさん、YT0014さんからのご指摘通り、変換したいデータ以外(‘abc’など)も10進数としてしまいますね。
string.hexdigits の存在を知りました。
a = '1C8','0C3A','9F07D2','ffff','ffgf','7b2FF00FF'
import string
list = []
for i in a:
result = set(i).issubset(set(string.hexdigits))
list.append(result)
print(list)
#[True, True, True, True, False, True]
データフレームの列毎に実行して、全てTrueなら、10進数への変換処理実行とできれば、というところです。
とはいえ、列毎の処理をどうすりゃいいものか。。。まだまだです。
投稿2022/04/25 05:01
編集2022/05/06 11:20総合スコア33
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
abc とあるとき、文字列とするのか16進数とするのかどっちでしょうか
投稿2022/04/24 15:26
総合スコア87719
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/25 05:00
2022/04/25 06:43
2022/05/08 06:56
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。