我有一個包含整數和字符串的列的熊貓數據框。將字符串(來自也包含整數的熊貓數據幀列)轉換爲整數
我想保留整數,並只使用int.from_bytes
方法將該列的字符串轉換爲整數。這可能嗎?
你會建議的其他方式嗎?
我需要總是將出現在此列中的任何字符串(通常是最多3個字符的字符串)轉換爲相同的唯一整數。謝謝。
編輯:
道歉已故答復和混亂的問題。其實我嘗試了各種不起作用的東西,但我的問題肯定不夠清楚。爲了說明這個問題,首先要考慮的是,你可以用下面的代碼轉換字符的字符串轉換成整數:
int.from_bytes(bytearray('CD', 'ascii'), byteorder='big', signed=False)
其中,「CD」是我要轉換成整數的字符串。在這種情況下,'CD'被轉換爲int 17220.'C2'將被轉換爲17202.
在我的情況中,我有一個包含整數和字符串的列。字符串通常是2或3個字符串,例如上面提到的字符串。我想要轉換此列,保留整數,然後使用上述方法將字符串轉換爲整數。因此,例如一列[1,'CD',2,'C2']應該被轉換爲[1,17220,2,17202]。
從@AlexanderMcFarlane的答案,我設法找到了這樣一個解決方案:
import re
regex = re.compile(r"[-+]?\d+(\.0*)?$")
def is_int(v):
return regex.match(str(v).strip()) is not None
def string_int(x):
if is_int(x):
return int(float(x))
else:
return int.from_bytes(bytearray(x, 'ascii'), byteorder='big', signed=False)
例
x = [1, 'CD', 2, 'C2', '5']
df = pd.DataFrame(x, columns=['col'])
In: df
Out: col
0 1
1 CD
2 2
3 C2
4 5
In: df['col']=df['col'].apply(string_int)
df
Out: col
0 1
1 17220
2 2
3 17202
4 5
我會感謝您的反饋。和許多感謝@AlexanderMcFarlane
樣本數據,輸出操作,你嘗試過這麼遠嗎? – Zero
請向我們展示您的努力! SO不是一種編碼服務,但我們'都'願意提供幫助。並且最後舉一個例子說明你有什麼和想要什麼,以便我們更好地理解這個問題。然後你可能會得到你想要的答案。 –
@MarvinTaschenberger我認爲這是相當明顯的 –