python pandas extract year from datetime: df['year'] = df['date'].year is not working
質問
データフレームを
read_csv
を介してデータフレームをインポートしますが、何らかの理由で年や月をシリーズから抽出することができません。
df['date']
で、それを試すと
AttributeError: 'Series' object has no attribute 'year'
:
date Count
6/30/2010 525
7/30/2010 136
8/31/2010 125
9/30/2010 84
10/29/2010 4469
df = pd.read_csv('sample_data.csv', parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].year
df['month'] = df['date'].month
UPDATE
で解決しようとすると
df['date'].dt
で解決しようとすると、 "AttributeError: 'Series' object has no attribute 'dt' "が表示されます。
df = pd.read_csv('sample_data.csv',parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
この質問は繰り返しのようで申し訳ありません - 私は答えが私が骨のように感じることを期待しています...しかし、私はSOで同様の質問に対する答えを使用して運がありませんでした。
フォローアップ:私のAnaconda環境で私のpandas 0.14.1をより新しいリリースに更新することができないようです、以下の試みのそれぞれは無効な構文エラーを生成します。私はPython 3.4.1 64bitを使用しています。
conda update pandas
conda install pandas==0.15.2
conda install -f pandas
何かアイデアはありますか?
どのように解決するのですか?
最近のバージョンのpandasを使用している場合、datetime属性を使用することができます。
dt
を使ってdatetimeのコンポーネントにアクセスすることができます。
In [6]:
df['date'] = pd.to_datetime(df['date'])
df['year'], df['month'] = df['date'].dt.year, df['date'].dt.month
df
Out[6]:
date Count year month
0 2010-06-30 525 2010 6
1 2010-07-30 136 2010 7
2 2010-08-31 125 2010 8
3 2010-09-30 84 2010 9
4 2010-10-29 4469 2010 10
EDIT
古いバージョンのpandasを使用しているようですが、その場合は以下のようにするとうまくいくでしょう。
In [18]:
df['date'] = pd.to_datetime(df['date'])
df['year'], df['month'] = df['date'].apply(lambda x: x.year), df['date'].apply(lambda x: x.month)
df
Out[18]:
date Count year month
0 2010-06-30 525 2010 6
1 2010-07-30 136 2010 7
2 2010-08-31 125 2010 8
3 2010-09-30 84 2010 9
4 2010-10-29 4469 2010 10
でこれをdatetimeにパースしなかった理由については
read_csv
において、カラムの序列を渡す必要があります (
[0]
) を渡す必要があります。
True
をパースしようとするからです。
[1,2,3]
を見る。
ドキュメント
In [20]:
t="""date Count
6/30/2010 525
7/30/2010 136
8/31/2010 125
9/30/2010 84
10/29/2010 4469"""
df = pd.read_csv(io.StringIO(t), sep='\s+', parse_dates=[0])
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 0 to 4
Data columns (total 2 columns):
date 5 non-null datetime64[ns]
Count 5 non-null int64
dtypes: datetime64[ns](1), int64(1)
memory usage: 120.0 bytes
というわけで、パラメータ
parse_dates=[0]
に
read_csv
を呼び出す必要はないはずです。
to_datetime
を呼び出す必要はないはずです。
関連
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] Pandasのデータフレームから行を選択するために値のリストを使用する
-
[解決済み] 日付から日を引くには?
-
[解決済み] datetimeをdateに変換するにはどうすればよいですか?
-
[解決済み] Pythonで日付をdatetimeに変換する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PandasのDatetimeカラムからMonthとYearだけを別々に抽出する方法
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?