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

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

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

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

pandas

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

Q&A

解決済

1回答

397閲覧

pandasのread_excelメソッドで読み込んだデータに、新しくリスト内の1つ目のリストの値で埋め尽くされた列を追加したい。

masatarou756

総合スコア12

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

pandas

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

0グッド

0クリップ

投稿2022/03/24 06:03

前提

pandasでread.excelメソッドを使って読み込んだデータに、
予め取得した
list = [["aaa", 1, 111], ["bbb", 2, 222]]
の様なlistの一つ目のlistのデータを、要素ごとにカラムを付けた一つの列として加えたいのですが、上手くいかず難航しています。
お忙しいところ恐縮ですが、ご回答いただけますと幸いです。

実現したいこと

list内の1つ目のlistだけ以下のように、カラム名を要素ごとにつけてデータフレームに新しく列として加えたいです。

イメージとしては、

list = [["aaa", 1, 111], ["bbb", 2, 222]]

上記の様なlistの一つ目のlist、つまり、["aaa", 1, 111]の部分を、
以下の一つ目の表に新しく列として加えて、二つ目の表のようにしたいといった感じです。

name
0sam
1sally
2bob
namel1l2l3
0samaaa1111
1sallyaaa1111
2bobaaa1111

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

上記のように新しくデータを加えようとして以下の様なエラーが出されました。

d = separate_list[j] TypeError: list indices must be integers or slices, not str

該当のソースコード

(補足)
※データフレームに同じ値を新しく列として入れるやり方の参考にしたサイトはこちらです。
※file_path :参照したいファイルのパスがlist形式で入ったものです。
※separate_list :リスト内に、["学籍番号", "大学名", "年月"]に対応するデータをリストで保持しています。

イメージとしては、以下の様な感じです。
list = [[1234, "A大学", 202203], [1653, "B大学", 202103]]

python

1#空のデータフレーム作成 2df = pd.DataFrame() 3for i in file_path: 4 df_read_excel = pd.read_excel(j, sheet_name=month_sheet, skiprows=17, skipfooter=1) 5 #concatの前にsplit_name_listのデータをデータフレームの左側にカラムでくっつけようとしましたが、上手くいきませんでした。 6 d = separate_list[i] 7 df_read_excel = df_read_excel["学籍番号", "大学名", "年月"] = d 8 #pd.concatはデータフレームのデータを縦に繋げる 9 df = pd.concat([df_read_excel, df], axis=0)

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1import pandas as pd 2 3df = pd.DataFrame({ 4 'name': ['sam', 'sally', 'bob'], 5}) 6lst = [["aaa", 1, 111], ["bbb", 2, 222]] 7 8# 9df[['l1', 'l2', 'l3']] = lst[0] 10print(df) 11 12# 13 name l1 l2 l3 140 sam aaa 1 111 151 sally aaa 1 111 162 bob aaa 1 111

投稿2022/03/24 06:13

melian

総合スコア19703

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

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

masatarou756

2022/03/24 08:03 編集

ご回答いただきありがとうございます! 上記の内容を参考に for文の中に df1 = pd.DataFrame() df1 = pd.concat([df_read_excel, df1], axis=0) df1[["学籍番号", "大学名", "年月"]] = separate_list[0] と新しくデータフレームを作成したら、一応稼働はしました! ただ、separate_list[0]のリストの要素指定の部分を 0➡i に変更するとエラーが出ます。これはどのように解決すればよろしいでしょうか?
masatarou756

2022/03/24 08:12

separate_listの要素指定に、file_pathの要素を持って来ていたのが原因でした💦 これで問題なく動けそうです!お騒がせ致しました💦
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問