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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

pandas

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

Q&A

解決済

2回答

170閲覧

CSVファイルに複数のリストを書き込み

syosinsya8

総合スコア5

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2024/04/25 13:03

実現したいこと

CSVファイルに複数のリストのデータを書き込みたいです。
リストはid,start,endの3つです。中のデータはすべてfloat型です
新しく作成したcsvファイルにid,start,endを改行して3つの列に書き込みたいです。

発生している問題・分からないこと

以下のコードのようにリストを改行して表示させたいのですが,複数のリストの場合がよくわからないです

# ファイル名の指定はここ filename = 'deta.csv' # ファイル,1行目(カラム)の作成 with open(filename, 'a') as f: writer = csv.writer(f) writer.writerows(['id']) with open(filename, 'w', newline="") as f: writer = csv.writer(f) df = pd.DataFrame(timestamp) df.to_csv(filename, mode='a', index=False, header=False) """ id 2.088479997 2.412478997 2.905045997 """

該当のソースコード

Python3

1import csv 2 3filename = 'deta.csv' 4 5data= [id,start,end] 6# csvモジュールを使って複数行の内容をCSVファイルに書き込み 7with open(filename, 'w', newline='') as f: 8 writer = csv.writer(f) 9 writer.writerows(data) 10 11 12#結果 13""" 142.088479997 2.412478997 2.905045997 3.712476997 152.352472997 2.872558997 3.672417997 4.080509997 16242.088 482.552 411.357 414.512 171行目はid 182行目はstart 193行目はend 20"""

csv

1実現したい実行例を表示 2 3id start        end 42.088479997 2.352472997 242.088 52.412478997 2.872558997   482.552  62.905045997 3.672417997   411.357   7

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

改行して表示されませんでした

補足

id,start,end内の数字はfloat型の適当な数値がはいっています
endの数字がずれていますが無視してください

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

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

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

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

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

TakaiY

2024/04/25 13:14

何が問題なのかよくわかりません。 「複数のリストのデータを書き込みたい」とは、どこにあるどういうデータを書き込みたいのでしょうか。 該当のソースコードにあるコードに、適切な値をdata変数に設定すれば複数行書き込むことはできるでしょう。 書き込みたいデータはどこにどのように存在するのでしょうか?
guest

回答2

0

zip() (https://docs.python.org/ja/3/library/functions.html#zip) を使えばいいです。
参考: https://note.nkmk.me/python-zip-usage-for/

python

1import csv 2 3id = [2.088479997, 2.412478997, 2.905045997, 3.712476997] 4start = [2.352472997, 2.872558997, 3.672417997, 4.080509997] 5end = [242.088, 482.552, 411.357, 414.512] 6 7filename = 'deta.csv' 8with open(filename, 'w', newline='') as f: 9 writer = csv.writer(f) 10 writer.writerow(['id', 'start', 'end']) # ヘッダー行(必要なら) 11 writer.writerows(zip(id, start, end))

pandas使うなら

python

1df = pd.DataFrame({'id': id, 'start': start, 'end': end}) 2df.to_csv(filename, index=False)

(このコードの動作には影響ありませんが、idがpythonの組み込みの関数と名前が重なっているので注意)

投稿2024/04/26 01:09

編集2024/04/26 01:14
bsdfan

総合スコア4578

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

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

0

ベストアンサー

実現したい実行例を表示

id start end
2.088479997 2.352472997 242.088
2.412478997 2.872558997 482.552
2.905045997 3.672417997 411.357

Pandas のデータフレームを作成して、転置(transpose:行と列を入れ替える)します。

python

1import pandas as pd 2 3id = [2.088479997, 2.412478997, 2.905045997, 3.712476997] 4start = [2.352472997, 2.872558997, 3.672417997, 4.080509997] 5end = [242.088, 482.552, 411.357, 414.512] 6 7# 8filename = 'data.csv' 9data = [id, start, end] 10df = pd.DataFrame(data, index=['id', 'start', 'end']).T # transpose 11df.to_csv(filename, index=False)

data.csv

csv

1id,start,end 22.088479997,2.352472997,242.088 32.412478997,2.872558997,482.552 42.905045997,3.672417997,411.357 53.712476997,4.080509997,414.512

投稿2024/04/25 13:23

melian

総合スコア19840

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

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

syosinsya8

2024/04/26 04:30 編集

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。 pandasについて勉強しようと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問