質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

504閲覧

TypeError: Cannot interpolate with all NaNs.

k0908

総合スコア102

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/27 06:07

df = pd.read_csv("test.csv", header=None)

とコードを書いてdf と実行すると

平成7年 1月 1995 2月 NaN 3月 NaN 4月 NaN 5月 NaN 6月 NaN 7月 NaN 8月 ・ ・ ・ 平成8年 1月 1996 2月 ・ ・ ・

のように出てきます。
このdfを

1995年1月 1995年2月 1995年3月 1995年4月 1995年5月 1995年6月 1995年7月 1995年月 ・ ・ ・ 1996年1月 1996年2月 ・ ・ ・

のようにしたいです。

df = df.interpolate()

とコードを書いて実行すると、
TypeError: Cannot interpolate with all NaNs. とエラーが出ます。
どのようにコードを書けば意図したことができますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DataFrame.fillna(method='ffill') を使うのはどうでしょうか

Python

1import io 2import pandas as pd 3 4data = """ 5平成7年,1月 61995,2月 7,3月 8,4月 9,5月 10,6月 11,7月 12,8月 13,9月 14,10月 15,11月 16,12月 17平成8年,1月 181996,2月 19,3月 20,4月 21,5月 22,6月 23,7月 24,8月 25,9月 26,10月 27,11月 28,12月 29""" 30df = pd.read_csv(io.StringIO(data), header=None) 31 32#df = pd.read_csv("test.csv", header=None) 33# NaNを埋める 34df = df.fillna(method='ffill') 35# 1月の年の箇所は2月の年をコピーする 36df[0] = df[0].mask(df[1]=='1月', df[0].shift(-1)) 37print(df)

投稿2018/09/27 06:51

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k0908

2018/09/27 07:21

ありがとうございます、2点質問があります。df.fillna(method='ffill')のmethod='ffill'は前の値で後のNaNを埋めるという役割ですか?あと、mask(df[1]=='1月', df[0].shift(-1)) のdf[0].shift(-1)はどういう意味なのでしょうか?
magichan

2018/09/27 07:34

(1) df.fillna(method='ffill')のmethod='ffill'は前の値で後のNaNを埋めるという役割ですか? その通りです。 その他には、後ろの値で置き換える mehod='bfill' や、固定値で置き換える df.fillna(0) 【この場合 0 で埋める】のような記述ができます。
magichan

2018/09/27 07:38

(2) df[0].shift(-1)はどういう意味なのでしょうか? 文字通り df[0]の列(年の列)を マイナス方向(上方向)に1つシフトさせます。つまり1月の行に本来1つ下の2月にあった年の値がきますので、単にその値を代入しております
k0908

2018/09/27 07:40

なるほど!ありがとうございます! よくわかりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問