我有一个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中提取值?
4条答案
按热度按时间bbmckpt71#
有2个问题:
1.由于您使用的是DateTimeIndex Dataframe ,因此在行和列之间遍历的正确表示法为:
或
这取决于所需的输出类型。
Notation A将返回序列值,而notation (b)将返回字符串值。
1.索引名称不能被截断-必须指定整个字符串。
因此,您的问题将通过以下方式解决:
hc8w905p2#
只要你已经将日期设置为索引,你就不能切片或提取它的任何数据。你可以提取它的月份和日期,因为它是一个常规列,而不是当它是一个索引。我以前遇到过这个问题,这就是解决办法。
我将其作为常规列保留,将月、日和年提取为每个列的单独列,然后将日期列指定为索引列。
mwg9r5ms3#
在日期列上作为句点(YYYY-MM)进行访问。在这种情况下,这将有所帮助
第一个
frebpwbc4#
时间戳索引是非常挑剔的。Pandas接受下面的每一个表达式,但是它们返回不同的类型。