簡體   English   中英

如何使用Python從pandas數據框中提取日期?

[英]How to extract dates from pandas dataframe using Python?

我使用熊貓創建了以下數據框:

         Name       BirthDay            
0        Alex     1985-01-01
1        John     1977-01-01
2        Rick     1992-01-01

我需要使用每個列中的值創建單獨的列表。 因此,我執行以下操作:

names = []
birthdays = []
while i < len(df.index):
    name = "".join(df['Name'].iloc[i])
    birthDay= "".join(df['BirthDay'].iloc[i])
    names.append(name)
    bithdays.append(birthDay)
    i += 1

該代碼可以很好地用名稱填充第一個列表,但是在嘗試提取日期時拋出此錯誤:

TypeError: can only join an iterable

我怎么做錯了?

我認為您需要Series.tolist和轉換datetimes strftime如果需要將datetime s轉換為string s:

names = df['Name'].tolist()
print (names)
['Alex', 'John', 'Rick']

birthdays = df['BirthDay'].dt.strftime('%Y-%m-%d').tolist()
print (birthdays)
['1985-01-01', '1977-01-01', '1992-01-01']

替代解決方案強制轉換為str

birthdays = df['BirthDay'].astype(str).tolist()
print (birthdays)
['1985-01-01', '1977-01-01', '1992-01-01']

如果需要列表中的時間戳記(熊貓日期時間):

birthdays = df['BirthDay'].tolist()
print (birthdays)
[Timestamp('1985-01-01 00:00:00'), Timestamp('1977-01-01 00:00:00'),
 Timestamp('1992-01-01 00:00:00')]

對於python日期和日期時間,請使用dateto_pydatetime

birthdays = df['BirthDay'].dt.date.tolist()
print (birthdays)
[datetime.date(1985, 1, 1), datetime.date(1977, 1, 1), datetime.date(1992, 1, 1)]

birthdays = df['BirthDay'].dt.to_pydatetime()
print (birthdays)
[datetime.datetime(1985, 1, 1, 0, 0) datetime.datetime(1977, 1, 1, 0, 0)
 datetime.datetime(1992, 1, 1, 0, 0)]

感謝cᴏʟᴅsᴘᴇᴇᴅScott Boston的評論。

您也可以簡單地使用pandas.Series.values

names = df.Name.values
birthdays = df.BirthDay.astype(str).values

暫無
暫無

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

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