簡體   English   中英

從date_range提取特定格式的日期

[英]extract the day in a specific format from a date_range

我想從帶有日期的列表中獲取僅包含“天”的列表。 我使用pd.date_range生成了日期,然后將其轉換為字符串。

date = '20170101'
fecha = pd.date_range(date , periods = 6, freq = 'D')
fecha = pd.Series(fecha.format())

print fecha[2][8:10]

for i in fecha:
    print fecha[i][8:10]

這會引發KeyError: '2017-01-01'

根據我的理解,這個for loop應該遍歷列表並獲得當天的2位數字。
我這樣做的原因是因為我需要使用'2017-4-4'格式創建日期(因此,低於10的數字只有一位數字)

有人可以幫忙嗎?
謝謝

您可以通過創建一個日期海峽dt.strftime ,然后轉換為str使用astype(str)然后拆分上'-'轉換為int擺脫的龍頭0 ,你再轉換回str ,所以我們可以再加入datetime組件又重新組合在一起:

In [105]:    
new_fecha = fecha.dt.strftime('%Y-%m-%d').str.split('-',expand=True).astype(int).astype(str)
new_fecha[0] + '-' + new_fecha[1] + '-' + new_fecha[2]

Out[105]:
0    2017-1-1
1    2017-1-2
2    2017-1-3
3    2017-1-4
4    2017-1-5
5    2017-1-6
dtype: object

看來您的fecha是不需要.dtDatetimeIndex

new_fecha = fecha.strftime('%Y-%m-%d').str.split('-',expand=True).astype‌​(int).astype(str)

所以上面應該工作

您正在嘗試訪問fecha中不存在的密鑰。 這發生在:

for i in fecha:
    print fecha[i][8:10]

(可能在這里:也print fecha[2][8:10]
原因是i不是fetcha的索引,而是其中的一個項目。

更改為:

for i in fecha:
    print i[8:10]

要么

for i in range(len(fecha)):
    print fecha[i][8:10]

修復很簡單,但是我將嘗試解釋您所做的事情。

您創建了一個名為fecha的變量,它是一個pandas.Series對象,其索引范圍為05 ,其值是類似於日期的字符串:

print(fecha)

0    2017-01-01
1    2017-01-02
2    2017-01-03
3    2017-01-04
4    2017-01-05
5    2017-01-06
dtype: object
#      ^
# Notice dtype object.  Usually indicative of strings.

現在,當您使用for循環進行迭代時,是否要遍歷索引? 還是價值觀? 換句話說,什么是i

讓我們打印看看

for i in fecha:
    print(i)

2017-01-01
2017-01-02
2017-01-03
2017-01-04
2017-01-05
2017-01-06

哈啊! 這些是字符串值,而不是索引。 好的,現在我們知道了,我們可以解釋為什么fecha[i]不起作用。 這是因為pandas.Series上的[]會嘗試從索引為i fecha獲取值。 但! i是值而不是索引。

以下是解決此問題的多種方法:

選項1

for i in fecha:
    print(i[8:10])

01
02
03
04
05
06

選項2
iteritems

for i, v in fecha.iteritems():
    print(fecha[i][8:10])

01
02
03
04
05
06

選項3
.strftime 也請參閱此鏈接以獲取strftime
跳過系列對象並從日期時間索引打印

for d in pd.date_range(date, periods=6):
    print(d.strftime('%d'))

01
02
03
04
05
06

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM