我有一個 Pandas DataFrame,其行和列是 DatetimeIndex。
import pandas as pd
data = pd.DataFrame(
{
"PERIOD_END_DATE": pd.date_range(start="2018-01", end="2018-04", freq="M"),
"first": list("abc"),
"second": list("efg")
}
).set_index("PERIOD_END_DATE")
data.columns = pd.date_range(start="2018-01", end="2018-03", freq="M")
data

不幸的是,當我嘗試提取一個值時,我遇到了各種錯誤:
data['2018-01', '2018-02'] # InvalidIndexError: ('2018-01', '2018-02')
data['2018-01', ['2018-02']] # InvalidIndexError: ('2018-01', ['2018-02'])
data.loc['2018-01', '2018-02'] # TypeError: only integer scalar arrays can be converted to a scalar index
data.loc['2018-01', ['2018-02']] # KeyError: "None of [Index(['2018-02'], dtype='object')] are in the [columns]"
如何從使用 DatetimeIndex 的 DataFrame 中提取值?
uj5u.com熱心網友回復:
只要您已經將日期設定為索引,您將無法對其進行切片或提取任何資料。您可以提取它的月份和日期,因為它是常規列而不是索引。我以前有這個,這就是解決方案。
我將其保留為常規列,將月、日和年提取為每個列的單獨列,然后將日期列分配為索引列。
uj5u.com熱心網友回復:
有2個問題:
- 由于您使用的是 MultiIndex 資料框,因此在行和列之間遍歷的正確表示法是:
data.loc[rows_index_name, [column__index_name]]
- 索引名稱不能被截斷 - 您必須指定整個字串。
因此,您的問題將通過以下方式解決:
**data.loc['2018-01-31',['2018-01-31']]**
uj5u.com熱心網友回復:
您正在作為日期列上的句點 (YYYY-MM) 訪問。這在這種情況下會有所幫助
data.columns = pd.period_range(start="2018-01", end="2018-02", freq='M')
data[['2018-01']]
2018-01
PERIOD_END_DATE
2018-01-31 a
2018-02-28 b
2018-03-31 c
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525442.html
