gpt4 book ai didi

python - Pandas : how to select by date

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

为什么在这种情况下我可以按月进行选择,而不是按日期进行选择?

dates = pd.date_range( start = "01/01/1931" ,  end  =  "01/02/1941" )
new_df_4 = new_df_3.reindex(dates)
new_df_4["1931-10"][![enter image description here][1]][1]

enter image description here

但这行不通:

new_df_4["1931-10-02"]

KeyError Traceback(最后一次调用) 在 ()----> 1 new_df_4["1931-10-02"]

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
1990 return self._getitem_multilevel(key)
1991 else:
-> 1992 return self._getitem_column(key)
1993
1994 def _getitem_column(self, key):

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_column(self, key)
2002 result = self._constructor(self._data.get(key))
2003 if result.columns.is_unique:
-> 2004 result = result[key]
2005
2006 return result

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
1990 return self._getitem_multilevel(key)
1991 else:
-> 1992 return self._getitem_column(key)
1993
1994 def _getitem_column(self, key):

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_column(self, key)
1997 # get column
1998 if self.columns.is_unique:
-> 1999 return self._get_item_cache(key)
2000
2001 # duplicate columns & possible reduce dimensionality

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/generic.pyc in _get_item_cache(self, item)
1343 res = cache.get(item)
1344 if res is None:
-> 1345 values = self._data.get(item)
1346 res = self._box_item_values(item, values)
1347 cache[item] = res

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/core/internals.pyc in get(self, item, fastpath)
3223
3224 if not isnull(item):
-> 3225 loc = self.items.get_loc(item)
3226 else:
3227 indexer = np.arange(len(self.items))[isnull(self.items)]

/Users/romain/anaconda/lib/python2.7/site-packages/pandas/indexes/base.pyc in get_loc(self, key, method, tolerance)
1876 return self._engine.get_loc(key)
1877 except KeyError:
-> 1878 return self._engine.get_loc(self._maybe_cast_indexer(key))
1879
1880 indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4027)()

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3891)()

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12408)()

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12359)()

KeyError: '1931-10-02'

最佳答案

按月选择使用partial string indexing :

print (new_df_4["1931-10"])

如果分辨率相同(来自 same docs ),这将不起作用:

Warning However if the string is treated as an exact match, the selection in DataFrame‘s [] will be column-wise and not row-wise, see Indexing Basics. For example dft_minute['2011-12-31 23:59'] will raise KeyError as '2012-12-31 23:59' has the same resolution as index and there is no column with such name: To always have unambiguous selection, whether the row is treated as a slice or a single selection, use .loc.

In [95]: dft_minute.loc['2011-12-31 23:59']
Out[95]:
a 1
b 4
Name: 2011-12-31 23:59:00, dtype: int64

您可以使用 loc如果需要按日期选择:

new_df_4.loc["1931-10-02"]

示例:

np.random.seed(10)
dates = pd.date_range( start = "01/01/1931" , end = "01/02/1941" )
new_df_4 = pd.DataFrame({'a':np.random.randint(10, size=len(dates))}, index=dates)
print (new_df_4.head())
a
1931-01-01 9
1931-01-02 4
1931-01-03 0
1931-01-04 1
1931-01-05 9

print (new_df_4["1931-10"])
a
1931-10-01 9
1931-10-02 6
1931-10-03 9
1931-10-04 7
1931-10-05 8
1931-10-06 0
1931-10-07 9
1931-10-08 6
1931-10-09 0
1931-10-10 1
1931-10-11 0
...

print (new_df_4.loc["1931-10-02"])
a 6
Name: 1931-10-02 00:00:00, dtype: int32

关于 python - Pandas : how to select by date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064544/

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