要比較的字典:
PositiveKey = {"{":"0", "A":"1", "B":"2"}
NegativeKey = {"}":"0", "J":"1", "K":"2"}
當前資料幀:
Column 1
0 000000002758A
1 000000326588B
2 000000000567J
所需的資料幀:
Column 1
0 275.81
1 32658.82
2 -56.71
我試圖找到一種方法來檢查特定 DF 列的資料點內的最后一個字符是否與兩個字典匹配(分類為需要狀態為正或負)。根據資料點的最后一個字符與哪個字典鍵匹配:
- 我需要用相應的值更新資料點,并將整個資料點定義為正整數或負整數。(IE 0 行應該是“2758 1 ”,第 2 行應該是“-567 1 ”)
- 我還需要更新資料點以將小數點左移兩位。(IE 第 0 行應為 "275.81",第 2 行應為 "-56.71")。
我想將資料點轉換為整數,然后乘以 /- .01 或除以 /- 100 可以在這里作業嗎?任何輸入表示贊賞,謝謝!
uj5u.com熱心網友回復:
你的想法是正確的pd.eval:
我想將資料點轉換為整數,然后乘以 /- .01 或除以 /- 100 可以在這里作業嗎?
keys = {'^0 ': ''}
keys.update({f'{k}$': f'{v}/100' for k, v in PositiveKey.items()})
keys.update({f'{k}$': f'{v}/-100' for k, v in NegativeKey.items()})
df['Column 2'] = pd.eval(df['Column 1'].replace(keys, regex=True))
輸出:
>>> df
Column 1 Column 2
0 000000002758A 275.81
1 000000326588B 32658.82
2 000000000567J -56.71
>>> keys
{'^0 ': '',
'{$': '0/100',
'A$': '1/100',
'B$': '2/100',
'}$': '0/-100',
'J$': '1/-100',
'K$': '2/-100'}
uj5u.com熱心網友回復:
您可以將函式應用于'Column 1':
def get_number(x):
if x[-1] in PositiveKey:
return float(x[:-1] PositiveKey[x[-1]]) / 100
else:
return - float(x[:-1] NegativeKey[x[-1]]) / 100
df['Column 1'] = df['Column 1'].apply(get_number)
輸出:
Column 1
0 275.81
1 32658.82
2 -56.71
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375709.html
