如何使用 MultiIndex 在 Python 数据框列中进行字符串替换
How to do a string replacement in Python dataframe columns with MultiIndex
我是 Python(以及股票市场)的新手,所以我想同时学习这两者。
我目前的问题是,如果我使用 yfinance 从像 NEL.OL 这样的自动收报机下载数据,我会得到 AttributeError: 'DataFrame' object has no attribute 'NEL'
。
但是,如果我改为绘制 NETE,它就会起作用。
所以问题可能是代码名称中的点。
import yfinance as yf
import plotly.graph_objects as go
from datetime import date
import plotly.io as pio
pio.renderers.default = "browser"
today = date.today()
data = yf.download(tickers = "NETE NEL.OL",
start="2020-01-01",
end=today.strftime("%Y-%m-%d"),
interval = "1d",
group_by = 'ticker',
auto_adjust = True,
prepost = True,
threads = True,
proxy = None
)
fig = go.Figure(
data=go.Ohlc(
x=data.NEL.OL.index,
open=data.NEL.OL["Open"],
high=data.NEL.OL["High"],
low=data.NEL.OL["Low"],
close=data.NEL.OL["Close"]
)
)
fig.show()
我试图找到并替换为“.”在列中
data.columns = data.columns.str.replace('.', '_')
导致错误:AttributeError: Can only use .str accessor with Index, not MultiIndex
.
解决方法 1 可能是绘图命令中的不同语法,采用“.”考虑到。
Workaraund no 2 可能是我找不到的正确搜索和替换语法。
两者都有解决方案吗?
干杯
您尝试过使用 []
访问吗?
fig = go.Figure(
data=go.Ohlc(
x=data['NEL.OL'].index,
open=data['NEL.OL']["Open"],
high=data['NEL.OL']["High"],
low=data['NEL.OL']["Low"],
close=data['NEL.OL']["Close"]
)
)
或者,您可以将列名称中的点替换为下划线:
data.columns.set_levels(list(map(lambda x: x.replace('.', '_'), data.columns.get_level_values(0).drop_duplicates())), level=0, inplace=True)
fig = go.Figure(
data=go.Ohlc(
x=data.NEL_OL.index,
open=data.NEL_OL["Open"],
high=data.NEL_OL["High"],
low=data.NEL_OL["Low"],
close=data.NEL_OL["Close"]
)
)
我是 Python(以及股票市场)的新手,所以我想同时学习这两者。
我目前的问题是,如果我使用 yfinance 从像 NEL.OL 这样的自动收报机下载数据,我会得到 AttributeError: 'DataFrame' object has no attribute 'NEL'
。
但是,如果我改为绘制 NETE,它就会起作用。
所以问题可能是代码名称中的点。
import yfinance as yf
import plotly.graph_objects as go
from datetime import date
import plotly.io as pio
pio.renderers.default = "browser"
today = date.today()
data = yf.download(tickers = "NETE NEL.OL",
start="2020-01-01",
end=today.strftime("%Y-%m-%d"),
interval = "1d",
group_by = 'ticker',
auto_adjust = True,
prepost = True,
threads = True,
proxy = None
)
fig = go.Figure(
data=go.Ohlc(
x=data.NEL.OL.index,
open=data.NEL.OL["Open"],
high=data.NEL.OL["High"],
low=data.NEL.OL["Low"],
close=data.NEL.OL["Close"]
)
)
fig.show()
我试图找到并替换为“.”在列中
data.columns = data.columns.str.replace('.', '_')
导致错误:AttributeError: Can only use .str accessor with Index, not MultiIndex
.
解决方法 1 可能是绘图命令中的不同语法,采用“.”考虑到。 Workaraund no 2 可能是我找不到的正确搜索和替换语法。 两者都有解决方案吗?
干杯
您尝试过使用 []
访问吗?
fig = go.Figure(
data=go.Ohlc(
x=data['NEL.OL'].index,
open=data['NEL.OL']["Open"],
high=data['NEL.OL']["High"],
low=data['NEL.OL']["Low"],
close=data['NEL.OL']["Close"]
)
)
或者,您可以将列名称中的点替换为下划线:
data.columns.set_levels(list(map(lambda x: x.replace('.', '_'), data.columns.get_level_values(0).drop_duplicates())), level=0, inplace=True)
fig = go.Figure(
data=go.Ohlc(
x=data.NEL_OL.index,
open=data.NEL_OL["Open"],
high=data.NEL_OL["High"],
low=data.NEL_OL["Low"],
close=data.NEL_OL["Close"]
)
)