我一直在寻找解决方案,并尝试了一些建议,但没有得到答案。 我有一列中以指数形式存在字符串和长数,并且我需要从指数值中获取完整数字以进行进一步处理。
熊猫指数科学数转换为整数。
它看起来像
import pandas as pd
# tried adding this
pd.options.display.float_format = "{:.0f}".format
df = pd.read_csv('Detail Statement.csv')
# tried converting to int by ignoring other types after commenting display.format
df['Ref Number'] = df['Ref Number'].astype(int, errors='ignore')
# tried map
df['Ref Number'] = df['Ref Number'].map(int)
答案 0 :(得分:1)
您可以定义自定义函数并使用.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
如果浮点数很好,则可以将errors
参数设置为coerce
并使用pd.to_numeric
,然后使用.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