替换价值并将其与熊猫分开

时间:2020-06-03 19:43:18

标签: python pandas

我的原始数据:


      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+部分,并将其显示为700059566700.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

2 个答案:

答案 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