Я новичок в Python и пытаюсь получить строку из набора данных, который имеет самый высокий рейтинг idmb и самый высокий общий итог, который мне удалось получить, но мое значениеross_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", но я не мог понять, как использовать это в этой ситуации.






Вы форматируете свой вывод соответствующим образом:
n = 2.83415e+07
print(f'{n:f}')
print(f'{n:e}')
Выход:
28341500.000000
2.834150e+07
См. строковый формат мини-язык
Панды работают так же:
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)
Credit to: 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
Есть и другие способы форматирования - см. Как отобразить pandas DataFrame с плавающей запятой, используя строку формата для столбцов?
У меня такая же проблема. Использовать
df['Tata'].map(int)
Это сработало для меня, стоит попробовать:
df['col_name'] = df['col_name'].astype('int64')