我有一个包含整数和字符串的列的熊猫数据框。将字符串(来自也包含整数的熊猫数据帧列)转换为整数
我想保留整数,并只使用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我认为这是相当明显的 –