pandas.Series.replace 未与 yfinance 合作

pandas.Series.replace not working with yfinance

从 Yahoo Finance (yfinance) 导入数据后,我无法从系列中删除美元符号。有谁知道我做错了什么?这是我的代码。

import yfinance as yf

start_date = '2016-01-01'

yf_eth_df = yf.download('ETH-USD',start_date, today)
yf_eth_df = yf_eth_df.reset_index()


yf_eth_df.tail()

我创建了一个自定义列来获取开盘值和最高值之间的百分比变化。

输出为:

    Date    Open    High    Low Close   Adj Close   Volume  variation_open_high
0   2017-11-09  8.64 9.45 7.06 0.88 0.88 893249984   .32
1   2017-11-10  0.67 4.72 4.54 9.25 9.25 885985984   .25
2   2017-11-11  8.59 9.45 8.19 4.68 4.68 842300992   .53
3   2017-11-12  4.69 9.15 8.51 7.91 7.91 1613479936  .40
4   2017-11-13  7.02 8.42 7.02 6.72 6.72 1041889984  .51

出于某种原因,正在使用 $ 符号创建数据框。我想使用 yf_eth_df['variation_open_high'] = yf_eth_df['variation_open_high'].replace("$", '') 从我的最后一列中删除它,但它不起作用。

Series.replace 仅替换完全匹配的值。要替换子字符串,请使用 Series.str.replace

yf_eth_df['variation_open_high'] = yf_eth_df['variation_open_high'].str.replace("$", '', regex=False)

请注意,删除美元符号后,值仍然是字符串。看起来你希望它们作为浮点数,所以你必须显式转换它们

yf_eth_df['variation_open_high'] = ( 
    yf_eth_df['variation_open_high'].str.replace("$", '', regex=False)
                                    .astype(float)
)