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

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

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

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

Python

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

Q&A

解決済

1回答

1955閲覧

特定の行を別のcsvファイルへ出力する方法

iwhr

総合スコア15

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2018/05/29 06:16

編集2018/05/29 06:17

前提・実現したいこと

閲覧いただきありがとうございます.
Excel.csvファイルを読み込み100行ごとの結果を別のExcel.csvファイルに出力使用と考えているのですがうまくできません.
例として読み込むcsvファイルは以下のようになります.
A,B,C,D,E,F,G,H,I列はそれぞれ4367行までデータがあります.
よろしくお願いします.

イメージ説明

エラーメッセージ

IndexingError Traceback (most recent call last) <ipython-input-11-9a7d8b56f1fe> in <module>() 8 9 data1 = pd.read_csv("out2.csv",index_col="emit") ---> 10 df_e = data1.iloc[::100,1,2,3,4,5,6,7,8] 11 12 # csvファイルの作成 ~\Anaconda3\lib\site-packages\pandas\core\indexing.py in __getitem__(self, key) 1365 except (KeyError, IndexError): 1366 pass -> 1367 return self._getitem_tuple(key) 1368 else: 1369 # we by definition only have the 0th axis ~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _getitem_tuple(self, tup) 1735 def _getitem_tuple(self, tup): 1736 -> 1737 self._has_valid_tuple(tup) 1738 try: 1739 return self._getitem_lowerdim(tup) ~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _has_valid_tuple(self, key) 201 for i, k in enumerate(key): 202 if i >= self.obj.ndim: --> 203 raise IndexingError('Too many indexers') 204 if not self._has_valid_type(k, i): 205 raise ValueError("Location based indexing can only have " IndexingError: Too many indexers

自分で作成したソースコード

# coding: utf-8 import csv import numpy as np import matplotlib.pyplot as plt import pandas as pd data1 = pd.read_csv("out2.csv",index_col="emit") df_e = data1.iloc[::100,1,2,3,4,5,6,7,8] # csvファイルの作成 csvfile = open ("out3.csv",'w',newline="") df_e.to_csv(csvfile)

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

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

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

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

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

guest

回答1

0

ベストアンサー

.iloc[ 行範囲, 列範囲 ]と指定しないといけません。
行範囲=::100、列範囲=[1,2,3,4,5,6,7,8]の場合は
data1.iloc[::100,1,2,3,4,5,6,7,8]ではなく
data1.iloc[::100,[1,2,3,4,5,6,7,8]]と修正ください。

投稿2018/05/29 07:06

can110

総合スコア38233

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

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

iwhr

2018/05/29 07:18

can110さん iwhrです. 教えていただいたように修正したところ,出力することができました. ありがとうございました. 別件ですが作成したcsvファイルを開くと「out3.csvは編集のためロックされています」というメッセージが出てきて,読み取り専用でしか開くことができません. 読み取り専用ではなく通常通り開くことは可能でしょうか? よろしくお願いします.
can110

2018/05/29 07:23

提示ソースではopenの後.closeを呼び出していませんので python処理でファイルを閉じていないからではないでしょうか?
iwhr

2018/05/29 08:10

can110さん iwhrです.回答いただきありがとうございます. close()をpython上に打ち込むことで解決することができました.ありがとうございました. can110さんの回答をベストアンサーにさせていただきます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問