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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

6167閲覧

Python エラー

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/05/18 15:53

python

1import sys, csv, operator 2import pandas as pd 3 4df = pd.read_csv('analyze2.csv', sep=",") 5 6 7for i in range(0,67000): 8 value = df.iloc[i,0]#i行目の左列の取得 9 #print(value) 10 if value == 1: 11 method1 = df.iloc[i,1] #i行目の中央列の取得 12 for c in range(1,67000): 13 method2 = df.iloc[i+c,1] #i+c行目の中央列の取得 14 if method1 == method2: 15 copy = df.copy(i+c) #i+c行目のデータをコピー 16 df = df.drop(i+c) #i+c行目のデータを元データから削除 17 redf = pd.concat([df[:i],copy])#結合(dfデータのi行目まで+コピーした行列) 18 newdf = pd.concat([redf,df[i+2:]])#結合(redf+dfデータのi+2行目以降) 19 else: 20 continue 21 break 22 23 else: 24 continue 25 continue 26for s in range(0,67000): 27 print(newdf.iloc[s,0]) 28

以下エラー内容です。

Traceback (most recent call last): File "sort.py", line 19, in <module> df = df.drop(i+c) #i+c行目のデータを元データから削除 File "/usr/local/lib/python3.7/site-packages/pandas/core/frame.py", line 3940, in drop errors=errors) File "/usr/local/lib/python3.7/site-packages/pandas/core/generic.py", line 3780, in drop obj = obj._drop_axis(labels, axis, level=level, errors=errors) File "/usr/local/lib/python3.7/site-packages/pandas/core/generic.py", line 3812, in _drop_axis new_axis = axis.drop(labels, errors=errors) File "/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4965, in drop '{} not found in axis'.format(labels[mask])) KeyError: '[708] not found in axis'

どこを修正すれば良いか調べても分からない状況です。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

DataFrameの最大行数を超えた行を指定したため、その行が見つからないというエラーが出ています。
最大行数を超えないように修正する必要があります。

追記

python

1df = pd.read_csv('test.csv', sep=",") 2print(df) 3# aaa bbb 4# 0 ccc ddd 5# 1 eee fff 6# 2 ggg hhh 7# 3 iii jjj 8# 4 kkk lll 9# 5 mmm nnn 10 11df = df.drop(2) 12print(df) 13# 行番号の2が削除される 14# aaa bbb 15# 0 ccc ddd 16# 1 eee fff 17# 3 iii jjj 18# 4 kkk lll 19# 5 mmm nnn 20 21print(df.iloc[2,0]) 22# 行番号の2は削除されたのでエラーになると思いきやならない 23# iii 24# aaa bbb 25# 0 ccc ddd  0行目 26# 1 eee fff  1行目 27# 3 iii jjj 2行目 ←ここの値が取得される 28# 4 kkk lll 29# 5 mmm nnn 30 31print(df.drop(2)) 32# しかし行番号の2はないのでエラーになる 33# KeyError: '[2] not found in axis'

投稿2019/05/18 16:22

編集2019/05/19 04:23
mistn

総合スコア1191

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

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

退会済みユーザー

退会済みユーザー

2019/05/18 16:30

回答ありがとうございます。DataFrameの最大行数というのはプログラム内で変更可能なのでしょうか?
mistn

2019/05/18 16:46

行の挿入、削除によって変わってきますね。
退会済みユーザー

退会済みユーザー

2019/05/19 00:59

copyした行列を削除してから、違う場所に挿入しているプログラムなので最終的には最大行数は変わってないと思われるのですが...
mistn

2019/05/19 02:20

私のほうで試してみました。行の削除によって行数は変化しますが、行番号は変化しないようですね、そこは私が誤解していました。すみません。 ですが、存在しない行を指定していることには変わりありません。 csvのデータは何行目まであるのでしょうか。
退会済みユーザー

退会済みユーザー

2019/05/19 02:35

試していただくまでしていただきありがとうございます。 66999行目まであります。参考までに.infoの情報を以下に載せます。 <class 'pandas.core.frame.DataFrame'> RangeIndex: 66999 entries, 0 to 66998 Data columns (total 3 columns): 1 66999 non-null int64 convert orig/00000002.png -crop 1280x600+0+0 crop/00000002.png 66999 non-null object 1558070265.643368475 66999 non-null float64 dtypes: float64(1), int64(1), object(1) memory usage: 1.5+ MB
mistn

2019/05/19 04:21

ilocで指定する行番号とdropで指定する行番号に違いがあるようでそのせいでエラーになっているものと思われます。 回答に追記としてコードを入れておきました。
退会済みユーザー

退会済みユーザー

2019/05/20 03:20

ありがとうございます。試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問