我正在使用 Netflix 电影和电视节目数据集来更好地理解 pandas。
列date_added的格式为:“2024年9月21日”,据我了解,它将被解析为“%B-%d-%Y”。简单地使用 pd.read_csv() 读取会将此列返回为 object 类型。
使用
parse_dates=['date_added']
似乎不起作用,也没有指定格式。这是我的代码:
df = pd.read_csv('netflix_titles.csv', parse_dates=['date_added'], date_format='%B-%d-%Y')
df.info()
导致:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8807 entries, 0 to 8806
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 show_id 8807 non-null object
1 type 8807 non-null object
2 title 8807 non-null object
3 director 6173 non-null object
4 cast 7982 non-null object
5 country 7976 non-null object
6 date_added 8797 non-null object
7 release_year 8807 non-null int64
8 rating 8803 non-null object
9 duration 8804 non-null object
10 listed_in 8807 non-null object
11 description 8807 non-null object
dtypes: int64(1), object(11)
memory usage: 825.8+ KB
我做错了什么?
问题在于
date_format
论证。您指定了 %B-%d-%Y
,这将是 September-21-2024
,但您需要指定 %B %d, %Y
您实际上可以完全删除
date_format
,因为 parse_dates
会为您推断格式,因为该列已经采用标准格式。通常,如果您的日期不是标准格式,则只需指定日期格式。
您的代码应如下所示:
df = pd.read_csv('netflix_titles.csv', parse_dates=['date_added'], date_format='%B %d, %Y')
或
df = pd.read_csv('netflix_titles.csv', parse_dates=['date_added'])
试试这个
df = pd.read_csv('netflix_titles.csv') df['date_added'] = pd.to_datetime(df['date_added'], format='%B %d, %Y', error='coerce')
df.info()