在pandas python中将指数或科学数转换为整数

Posted

技术标签:

【中文标题】在pandas python中将指数或科学数转换为整数【英文标题】:converting exponent or scientific number into integer in pandas python 【发布时间】:2018-09-24 23:19:30 【问题描述】:

我是 python 的初学者,并试图从数据集中获取我设法获得的具有最高 idmb 评级和最高总总额的行,但我的 Gross_total 值不是整数。我如何将其转换为整数?以及如何获得执行统计功能的特定值。

import pandas as pd

dataset=pd.read_excel('movies.xls')

name=dataset['Title']
idmb=dataset['IMDB Score']

networth=dataset['Gross Earnings']

test_df=pd.DataFrame('movie':name,
                  'rating':idmb,
                  'gross_total':networth)


 nds=test_df.dropna(axis=0,how='any')

 a=nds['gross_total'].astype(int)

 highest_rating =nds.loc[nds['rating'].idxmax()]

 highiest_networth=nds.loc[ nds['gross_total'].idxmax()]

 print(highest_rating)

 print(highiest_networth)

我得到这个输出

  gross_total                  2.83415e+07
  movie          The Shawshank Redemption 
  rating                               9.3
  Name: 742, dtype: object

我已经搜索并了解了“pd.to_numeric”和“astype”功能,但我不明白如何在这种情况下使用它。

【问题讨论】:

【参考方案1】:

这对我有用,值得一试:

df['col_name'] = df['col_name'].astype('int64') 

【讨论】:

【参考方案2】:

我遇到了同样的问题。使用

df['Tata'].map(int)

【讨论】:

【参考方案3】:

你相应地格式化你的输出:

n =  2.83415e+07

print(f'n:f')
print(f'n:e')

输出:

28341500.000000
2.834150e+07

见string format mini language

Pandas 也一样:

import pandas as pd

df = pd.DataFrame ( ["tata": 2.325568e9])

# print with default float settings
print (df) 

pd.options.display.float_format = ':,.4f'.format  # set other global format
# print with changed float settings
print(df)

# really convert the type:
df["tata"] = df["tata"].astype(int)
# print with default int settings
print(df)

归功于:unutbu's answer here

输出:

           tata
0  2.325568e+09          # before format change

                tata
0 2.325.568.000,0000     # after format change


         tata            # after int conversion
0 -2147483648

还有其他方法可以进行格式化 - 请参阅 How to display pandas DataFrame of floats using a format string for columns?

【讨论】:

【参考方案4】:
pd.set_option('display.float_format', ':.2f'.format)
df = pd.DataFrame('Traded Value':[67867869890077.96,78973434444543.44],
              'Deals':[789797, 789878])
print(df)
Traded Value Deals
0 67867869890077.96 789797
1 78973434444543.44 789878

【讨论】:

以上是关于在pandas python中将指数或科学数转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

在python pandas df中将月份数转换为名称

如何在 SQL 中将指数和系数转换为整数值

在 hive 中将 bigint 转换为科学数

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame

在python中将指数形式的数字转换为十进制形式[重复]

python 在Pandas(Python)中将整数转换为浮点格式