Python 混合数据类型的熊猫将指数或科学数字转换为整数

Python 混合数据类型的熊猫将指数或科学数字转换为整数,python,pandas,dataframe,casting,Python,Pandas,Dataframe,Casting,我一直在寻找解决方案,尝试了一些建议,但没有得到答案。 我有一个列,其中字符串和长数字以指数的形式存在,我需要从指数值中获取完整的数字,以便进一步处理 将科学数字转换为整数 看起来像 您可以定义自定义函数并使用.apply def convert(x): try: return int(float(x)) except Exception: return x df['Ref Number'] = df['Ref Number'].apply(

我一直在寻找解决方案,尝试了一些建议,但没有得到答案。 我有一个列,其中字符串和长数字以指数的形式存在,我需要从指数值中获取完整的数字,以便进一步处理

将科学数字转换为整数

看起来像


您可以定义自定义函数并使用
.apply

def convert(x):
    try:
        return int(float(x))
    except Exception:
        return x

df['Ref Number'] = df['Ref Number'].apply(convert)
df['Ref Number'].iloc[0], type(df['Ref Number'].iloc[0])
'HSB345678', str

df['Ref Number'].iloc[-1] , type(df['Ref Number'].iloc[-1])
201498000000, int
如果浮动很好,则可以将
错误
参数设置为
强制
,然后使用
.fillna
填充不可转换的字符串

df['Ref Number'] = pd.to_numeric(df['Ref Number'], errors='coerce').fillna(df['Ref Number'])

df['Ref Number'].dtype
dtype('O')

df['Ref Number'].iloc[0], type(df['Ref Number'].iloc[0])
'HSB345678', str

df['Ref Number'].iloc[-1] , type(df['Ref Number'].iloc[-1])
201498000000.0, float

1.0984E+11
转换为
int
,但是
HSB345678
的结果应该是什么?不需要字符串转换仍然找不到解决方案示例输出与我将df.添加到_csv('output1.csv')时的输入相同
df['Ref Number'] = pd.to_numeric(df['Ref Number'], errors='coerce').fillna(df['Ref Number'])

df['Ref Number'].dtype
dtype('O')

df['Ref Number'].iloc[0], type(df['Ref Number'].iloc[0])
'HSB345678', str

df['Ref Number'].iloc[-1] , type(df['Ref Number'].iloc[-1])
201498000000.0, float