我的原始数据:
Main_Genre Genre_2 ... worldwide_gross year 0 Action Adventure ... $700,059,566 2018 1 Action Adventure ... $678,815,482 2018 2 Animation Action ... $608,581,744 2018 3 Action Adventure ... $416,769,345 2018 4 Action Comedy ... $318,491,426 2018
我更改了worldwide_gross
Dtype:
data2["worldwide_gross"]=data2[`"`worldwide_gross"].str.replace(',', '').str.replace('$', '').astype(float)
执行此操作时,字符串不会转换为float。
.str.replace(',', '.')
新数据:
Main_Genre imdb_rating length worldwide_gross 0 Action 7.4 135 7.000596e+25 1 Action 8.5 156 6.788155e+25 2 Animation 7.8 118 6.085817e+25 3 Action 6.2 129 4.167693e+25 4 Action 7.8 119 3.184914e+25
我想删除e+
部分,并将其显示为700059566
或700.059.566
。
我已经尝试过并且无法正常工作
pd.options.display.float_format = '{:,.1f}'.format<br>pd.reset_option('display.float_format'`enter code here`)
lambda x: x*10 or 100 or 1000
答案 0 :(得分:1)
您的代码对我来说似乎不错。要被数百万除,您可以直接除:
data2["worldwide_gross"] = data2["worldwide_gross"] / 1000000
您对显示格式的更改对我来说似乎很好。
对于这个小例子:
import pandas as pd
df = pd.DataFrame({"worldwide_gross": ["$700,059,566", "$678,815,482"], "year": [2018, 2017]})
df["worldwide_gross"]=df["worldwide_gross"].str.replace(',', '').str.replace('$', '').astype(float)
pd.options.display.float_format = '{{0:.0f}}'.format
print(df)
输出为:
worldwide_gross year
0 700059566 2018
1 678815482 2017
答案 1 :(得分:1)
您也可以尝试-
df['worldwide_gross'] = df['worldwide_gross'].str.replace('\$|\,','').astype(float)
df
Main_Genre Genre_2 ... worldwide_gross year
0 Action Adventure ... 700059566.0 2018
1 Action Adventure ... 678815482.0 2018
2 Animation Action ... 608581744.0 2018
3 Action Adventure ... 416769345.0 2018
4 Action Comedy ... 318491426.0 2018