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

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

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

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

pandas

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

Q&A

解決済

1回答

747閲覧

pandas大量のカラムがあるときのデータフレームの作成について

shin14

総合スコア11

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2022/04/26 08:42

pandasをつかって既存のCSVに行データを追加していくようなプログラムを考えています。

調べたところ下記のような方法が目につき試してみたのですが、確かにサンプルのように小規模だとこれでいいのですが
columns1 =["Product ID","Product Name","Price (JPY)"]
df1 = pd.read_csv('test.csv',encoding='shift-jis')
list2=[["ab1", "abc1", 10000],
["ab2", "abc2", 62000]]
df2 = pd.DataFrame(data=list2, columns=columns1)
df3=df1.append(df2, ignore_index=True)
df3.to_csv("test1.csv",encoding='shift-jis')

この方法だと事前にcolumns1としてカラムを名称登録していなければならず、
数百列あるような大規模なデータを扱う場合、いちいち手打ちでカラムを書くのは現実的ではないと考えています。

既存のCSVファイルにはデータが入っており、カラムが入力されていますので、
データの順番をそろえて、最終行に一括で行挿入することができれば一番手っ取り早いような気がするのですが、
そういったことはできないのでしょうか?
ありそうだなと思い検索してみたのですが、思っているような動作を説明しているものがなかなか見つけられなかったので
質問しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そういう場合はまず公式ドキュメントを確認するのがお勧めです。
カラム名をcsvファイルから取得する方法もちゃんと書いてあります。

pandas.read_csv

パラメータは「header」です

最終行に一括で行挿入することができれば一番手っ取り早いような気がするのですが、そういったことはできないのでしょうか?

できますよ。 検索うれば用例も沢山でてくるでしょう。

これとか


あくまでイメージですが
df1 = pd.read_csv('test.csv',encoding='shift-jis')
df1 = pd.Series(['B5', 'C5', 'D5',E5'....]
とすると、df1の最終行に記載した並び順で0列目からはいるそれだけでいいのです。

というおこtであれば、こんな感じでしょうか。

text

1#df1 2 a b c d e 30 1 2 3 4 5 41 10 20 30 40 50

python

1add_data = pd.Series([100,200,300,400,500], index=df1.columns) 2 3df2 = df1.append(add_data, ignore_index=True)

text

1#df2 2 a b c d e 30 1 2 3 4 5 41 10 20 30 40 50 52 100 200 300 400 500

投稿2022/04/26 09:06

編集2022/04/28 01:57
TakaiY

総合スコア12745

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

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

shin14

2022/04/28 01:23

pandasでカラム名をCSVから読み込む方法は知っていますし使っています。 上記でも書いた通り、手書きするのは現実的ではないですから。 参考に提示されたサイトも、事前に見ています。 実際に提示されたコードを実行していないので思い違いがある可能性はありますが、 どのコードも私の思っているものとは違うんですよ。 CSVを読み込んでいるのですから、わざわざ個別にカラムやインデックスを指定することなく最終行に一行分、列の頭から順にデータをいれたいのです。 参考に上げていただいたサイトの例はどれもインデックスやカラムを指定してデータを入れているという形をとっているように見えます。 インデックスはpandas側が場所を特定するために必ず必要というのはわかりますが、常に最終行にしかデータをいれないユーザーとしては無駄なのでわざわざインデックスやカラムを指定せずにデータを入れたいのです。 あくまでイメージですが df1 = pd.read_csv('test.csv',encoding='shift-jis') df1 = pd.Series(['B5', 'C5', 'D5',E5'....] とすると、df1の最終行に記載した並び順で0列目からはいるそれだけでいいのです。 CSV保存時には非表示で保存するので適当なインデックス名で入れてしまえばいいだけではあるんですが うーん・・・・根本的にdfに対するにんしきがまちがっているのか・・・・
TakaiY

2022/04/28 01:57

回答に追記してみました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問