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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

Q&A

0回答

686閲覧

pandasでilocを用いて抽出したデータについて

ryosuke197

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

0グッド

0クリップ

投稿2019/11/28 17:19

前提・実現したいこと

Pythonで計算プログラムの作成を行っています。以下のソースコードの中盤くらいまでは、データの読み取りや結合がほとんどです。
抽出したデータを用いて、繰り返し計算を行う機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

single positional indexer is out-of-bounds

該当のソースコード

python

import numpy as np
import pandas as pd

df_N1=pd.read_csv("Uraga_GateCrossingList_20180101NS.csv",encoding="shift-jis")
lN = len(df_N1)
df_S1=pd.read_csv("Uraga_GateCrossingList_20180101NS.csv",encoding="shift-jis")
lS = len(df_S1)
df_W1=pd.read_csv("Uraga_GateCrossingList_20180101WE.csv",encoding="shift-jis")
lW = len(df_W1)
df_E1=pd.read_csv("Uraga_GateCrossingList_20180101WE.csv",encoding="shift-jis")
lE = len(df_E1)

df_NN=df_N1[(df_N1["i"]==0) & (df_N1["j"]==0)]
df_SS=df_S1[(df_S1["i"]==1) & (df_S1["j"]==0)]
df_WW=df_W1[(df_W1["i"]==0) & (df_W1["j"]==0)]
df_EE=df_E1[(df_E1["i"]==1) & (df_E1["j"]==0)]

df_N2=df_NN.groupby('Class').mean()
df_S2=df_SS.groupby('Class').mean()
df_W2=df_WW.groupby('Class').mean()
df_E2=df_EE.groupby('Class').mean()

df_Q1=pd.merge(df_NN,df_SS,how="outer")
df_Q2=pd.merge(df_WW,df_EE,how="outer")
df_Q=pd.merge(df_Q1,df_Q2,how="outer")

df_A1=pd.merge(df_N2,df_S2,how="outer")
df_A2=pd.merge(df_W2,df_E2,how="outer")
df_A=pd.merge(df_A1,df_A2,how="outer")
df_AA=df_A.groupby('Class2').mean()

df_LLL=df_AA.iloc[:,[13]]
df_BBB=df_AA.iloc[:,[18]]
df_VVV=df_AA.iloc[:,[3]]
df_LLLT=df_LLL.T
df_LLLL=pd.concat([df_LLL,df_LLLT])
df_BBBT=df_BBB.T
df_BBBB=pd.concat([df_BBB,df_BBBT])
df_VVVT=df_VVV.T
df_VVVV=pd.concat([df_VVV,df_VVVT])

df_XX=df_Q.groupby('Class').mean()
df_XXX=df_XX.iloc[:,[20]]

df_XXXT=df_XXX.T
df_XXXX=pd.concat([df_XXX,df_XXXT])

c=1
b=1
a=c
for c in range(22):

for a in range(22): df_XXXX.iloc[a,b]=np.abs(df_XXXX.iloc[a,0]-df_XXXX.iloc[22,b]) a=a+1 if a==22: b=b+1 c=c+1

df_Vij=df_XXXX

d=1
e=1
f=d
for vc in range(22):

for va in range(22): df_Vij.iloc[d,e]=np.sqrt(df_VVVV.iloc[d-1,0]* *2+df_VVVV.iloc[22,e]**2-2*df_VVVV.iloc[d-1,0]*df_VVVV.iloc[22,e]*df_XXXX.iloc[d,e]) d=d+1 if d==22: e=e+1 f=f+1

試したこと

1回目の繰り返しは上手くいくのですが、2回目が何故か上手くいきません。列の抽出をdf[]で行っていて、iloc[:,[]]に変えてみたのですが、上手くいきません。エラーメッセージの上には、tupleやらkeyやら書いてありました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

hayataka2049

2019/11/28 17:41

エラーメッセージは長くても全文掲載してください。また、コードやエラーは<code>ボタンで挿入できるコードブロックの中に入れてください。 (質問は編集できるので、修正してください)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問