4列目にASCII値が含まれているデータフレームがあります。
mydict=[('1385145553847005',
'54',
'NPAVIN',
'9175042231172',
'[89,111,117,114,32,78,80,65,86,32,79,110]',
'20131123000914',
'NA',
'NA',
'0',
'0',
'NA',
'undefined',
'a4d05539-cd61-43ee-a870-702e20caeaff',
'0',
'0',
'0'),
('1385145553847006',
'55',
'NPAVIN1',
'9175042231171',
'[78,80,65,86,32,79,110]',
'20131123000915',
'NA',
'NA',
'0',
'0',
'NA',
'undefined',
'a4d05539-cd61-43ee-a870-702e20caeaff',
'0',
'0',
'0')
]
import pandas as pd
df = pd.DataFrame(mydict)
4列目に適用する必要のある関数を作成しました。
def get_ascii(amyl):
mys=''
for item in amyl:
mys= mys+(chr(int(item)))
return mys
これは動作しません。値を取得しますエラー:
df.apply(get_ascii(df[4]))
期待される結果:次の2つの値をデータフレームの最後の列に追加する必要があります。
'Your NPAV On'
'NPAV On'
ここにはいくつかの問題があります。値は値のリストのリテラル文字列です。
In [295]:
df[4]
Out[295]:
0 [89,111,117,114,32,78,80,65,86,32,79,110]
1 [78,80,65,86,32,79,110]
Name: 4, dtype: object
これが意図されているかどうかはわかりませんが、これをリストに変換する必要があります。
次に、関数はシリーズ全体で機能していますが、一度に1つの行の値を期待しているため、一度に1つの行を処理する場合は、passparamを渡す必要がありaxis=1
ます。
とにかく、以下は、渡されたシリーズを評価し、そのシリーズの唯一の要素値にアクセスし、リストとして評価してから音訳を実行することによって機能します。
In [294]:
import ast
def get_ascii(amyl):
l = ast.literal_eval(amyl.values[0])
mys=''
for item in l:
mys= mys+(chr(item))
return mys
df[[4]].apply(get_ascii, axis=1)
Out[294]:
0 Your NPAV On
1 NPAV On
dtype: object
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加