因为业务需求是比较两张表里的金额是否一致,一张表提取出来是字符串类型,来一张是int类型。
如在提取单元格数据后有字符串类型数据
8,663,518.78
594,973.68
400,000.00
7,656.30
如何把上面转换成int类型
8663518.78
594973.68
400000
7656.3
或者如何在提取的时候就是默认int类型
你的数字都是有小数点的,怎么能转成int
如果数据再某一列上
for i in range(len(dd['某一列'])):
dd.loc[i,'list_date']=float(dd.loc[i,'list_date'].replace(",",""))
您可以使用 pandas.to_numeric 函数将 Excel 中的金额数据转换为整数类型。例如:
import pandas as pd
# 假设您已经使用 pandas 读取了 Excel 文件
# df 是一个包含金额数据的 DataFrame
# 使用 to_numeric 将数据转换为整数类型
df['amount'] = pd.to_numeric(df['amount'], downcast='integer')
在上面的代码中,我们首先导入了 pandas 库。然后,我们使用 to_numeric 函数将 DataFrame 中的 amount 列转换为整数类型。我们还使用了 downcast 参数来指示如何转换数据,在这种情况下,我们将使用最小的整数类型(例如,如果所有数据都在范围内,则使用 int8)。
请注意,如果数据中存在缺失值,则 to_numeric 函数可能会抛出异常。您可以使用 errors 参数指示如何处理缺失值,例如,您可以将其设置为 errors='coerce',这样就会将缺失值转换为 NaN。
希望这能帮助您!
可以尝试编写一个函数,将带有逗号的用金额表示的数值转化为数字
使用 pandas 中的 astype 函数可以将数据转换为 int 类型。
例如,对于提取出来的金额数据的字符串类型的数据,可以这样转换:
import pandas as pd
# 提取出来的数据
data = ['8,663,518.78', '594,973.68', '400,000.00', '7,656.30']
# 转换为 int 类型
data = pd.to_numeric(data, errors='coerce').astype(int)
# 输出结果
print(data)
# 输出:[8663518 594973 400000 7656]
如果在提取的时候就想默认为 int 类型,可以在读入数据的时候使用 dtype 参数指定类型。
例如,使用 pd.read_excel 函数读入 Excel 中的数据,可以这样指定类型:
import pandas as pd
# 读入 Excel 中的数据,将金额数据指定为 int 类型
data = pd.read_excel('file.xlsx', dtype={'金额': int})
# 输出结果
print(data)
提供参考代码和参考实例,参考代码:
def convert_percent(val):
"""
转化%的字符串为浮点类型
- 移除 %
- 除以100
"""
new_val = val.replace('%', '')
return float(new_val) / 100
df_2 = pd.read_csv("data/sales_data_types.csv",
dtype={'Customer Number': 'int'},
converters={'2016': convert_currency,
'2017': convert_currency,
'Percent Growth': convert_percent,
'Jan Units': lambda x: pd.to_numeric(x, errors='coerce'),
'Active': lambda x: np.where(x == "Y", True, False)
})
参考实例:https://blog.csdn.net/qq_41404557/article/details/125898404
【实例讲解详细,注解清晰】