gpt4 book ai didi

python - 如何忽略日期不在 Pandas 索引中的错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:42 25 4
gpt4 key购买 nike

我目前有一套不包括圣诞节。我尝试对数据进行子集化,但收到不在索引中的错误。如何设置 pandas 以忽略此错误并将仍在索引中的所有日期子集化?

错误:

KeyError: "DatetimeIndex(['2015-12-25', '2016-12-25'], dtype='datetime64[ns]', freq=None) not in index"

例子:

df = df[pd.date_range(date(2015,6,1), date(2017,8,15))]

最佳答案

你需要:

intersection 选择列:

rng = pd.date_range(date(2015,6,1), date(2017,8,15))
df = df[rng.intersection(df.columns)]

或通过exact indexing :

df = df.loc[:, '2015-06-01':'2017-08-15']

或按条件:

df = df.loc[:, (df.columns >= '2015-06-01') & (df.columns <= '2017-08-15')]

rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df = df.iloc[:, df.columns.isin(rng)]

或通过truncate :

df = df.truncate('2015-06-01','2017-08-15', axis=1)

示例:

from datetime import datetime

np.random.seed(452)
rng = pd.date_range('2015-06-01', periods=10)
df = pd.DataFrame(np.random.randint(10, size=(10,10)), columns=rng).iloc[:, np.r_[0:2, 5:9]]
print (df)
2015-06-01 2015-06-02 2015-06-06 2015-06-07 2015-06-08 2015-06-09
0 0 7 0 3 0 7
1 8 9 8 1 0 2
2 5 2 2 0 0 9
3 2 9 3 8 0 6
4 8 8 7 4 9 8
5 9 9 0 4 0 4
6 2 1 4 1 0 1
7 4 1 9 5 6 7
8 5 9 8 1 4 6
9 6 5 2 5 3 1

rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df1 = df[rng.intersection(df.columns)]

df2 = df.loc[:, '2015-06-01':'2015-06-07']

df3 = df.loc[:, (df.columns >= '2015-06-01') & (df.columns <= '2015-06-07')]

rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df4 = df.iloc[:, df.columns.isin(rng)]

df5 = df.truncate('2015-06-01','2015-06-07', axis=1)

print (df1)
#print (df2)
#print (df3)
#print (df4)
#print (df5)

2015-06-01 2015-06-02 2015-06-06 2015-06-07
0 0 7 0 3
1 8 9 8 1
2 5 2 2 0
3 2 9 3 8
4 8 8 7 4
5 9 9 0 4
6 2 1 4 1
7 4 1 9 5
8 5 9 8 1
9 6 5 2 5

关于python - 如何忽略日期不在 Pandas 索引中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com