当前位置: 首页 > 面试题库 >

如何在Python中将表示为字符的数字转换为数字

寇甫
2023-03-14
问题内容

我的数据框中有一列,其值类似于‘3.456B’,实际上代表34.56亿(和百万表示法类似)。如何将此字符串形式转换为正确的数字表示形式?

这显示了数据帧:

import pandas as pd
data_csv = pd.read_csv('https://biz.yahoo.com/p/csv/422conameu.csv')
data_csv

这是一个样本值:

data_csv['Market Cap'][0]
type(data_csv['Market Cap'][0])

我尝试了这个:

data_csv.loc[data_csv['Market Cap'].str.contains('B'), 'Market Cap'] = data_csv['Market Cap'].str.replace('B', '').astype(float).fillna(0.0)
data_csv

但不幸的是,最后还有带“ M”的值,表示百万。它返回错误,如下所示:

ValueError: invalid literal for float(): 6.46M

如何在此列中用适当的值替换B和M?有更好的方法吗?


问题答案:

假设所有条目的末尾都有一个字母,则可以执行以下操作:

d = {'K': 1000, 'M': 1000000, 'B': 1000000000}
df.loc[:, 'Market Cap'] = pd.to_numeric(df['Market Cap'].str[:-1]) * \
    df['Market Cap'].str[-1].replace(d)

这会将除最后一个字符以外的所有内容转换为数字值,然后将其乘以等效于最后一个字符中字母的数字。



 类似资料:
  • 我正在尝试将一个包含“4,3”这样的数字的列转换为数据类型string。 ValueError:无法将字符串转换为浮点数:“4,3”

  • 问题内容: 我希望能够将诸如“ 1,2,5-7,10”之类的字符串转换为诸如[1,2,5,6,7,10]之类的python列表。我环顾四周,发现了这一点,但是我想知道是否有一种干净简单的方法可以在Python中做到这一点。 问题答案: def f(x): result = [] for part in x.split(‘,’): if ‘-‘ in part: a, b = part.split(

  • 问题内容: 我有一个来自MySQL查询的元组,像这样: 我想将所有字符串元素转换为整数,然后将它们放回列表列表中: 我试图用它来实现它,eval但是还没有得到任何体面的结果。 问题答案: 是Python标准的内置函数,用于将字符串转换为整数值。你可以使用包含数字作为参数的字符串来调用它,然后返回转换为整数的数字: 上面的照片2。 如果你知道列表T1的结构(它仅包含列表,仅一个级别),则可以在Pyt

  • 问题内容: 我有一个清单说: 如何在不触及字符串的情况下转换预期的数字? 感谢您的帮助。 问题答案:

  • 问题内容: 我有以下格式的行: 现在,我要在文件中写入以下内容: 基本上将上面转换成jsonarray? Python中是否有内置方法,库或函数可将数组“转储”到json数组中? 另请注意,我不希望在文件中序列化“ L”。 问题答案: 使用该模块生成JSON输出: 这会将JSON结果直接写入文件(如果文件已经存在,则替换任何先前的内容)。 如果您需要Python本身中的JSON结果字符串,请使用(

  • 给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?