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

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

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

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

Python 3.x

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

pandas

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

Q&A

解決済

2回答

808閲覧

辞書リストを含むcsvのpandasでの読み込み

pen_ari

総合スコア50

CSV

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

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2021/05/20 00:03

csv

11,[{'key1':'value1'},{'key2':'value2'}],'a' 22,[{'key1':'value1'},{'key2':'value2'},{'key3':'value3'}],'b' 33,[{'key1':'value1'}],'c'

上記csvを3列としてpandasで読み込みを行いたいです

python

1import pandas as pd 2 3csv = 'test.csv' 4 5data = pd.read_csv( 6 csv, 7 names=['r1','r2','r3'] 8 ) 9print(data)

上記のようにすると、辞書リスト内のカンマを区切り文字として判定してしまうのか、以下のようにずれて出力されてしまいます

r1 r2 r3 1 [{'key1':'value1'} {'key2':'value2'}] 'a' 2 [{'key1':'value1'} {'key2':'value2'} {'key3':'value3'}] 3 [{'key1':'value1'}] 'c' NaN

これを以下のように出力するにはどうすれば良いでしょうか?

r1 r2 r3 1 [{'key1':'value1'} {'key2':'value2'}] 'a' 2 [{'key1':'value1'} {'key2':'value2'} {'key3':'value3'}] 'b' 3 [{'key1':'value1'}] 'c'

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

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

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

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

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

guest

回答2

0

きれいな方法が思いつかなかったので、参考まで。

python3

1import pandas as pd 2import csv 3csv_path = 'test.csv' 4df_dct = {'r1':[], 'r2':[], 'r3':[]} 5with open(csv_path) as f: 6 reader = csv.reader(f) 7 for row in reader: 8 df_dct['r1'].append(int(row[0])) 9 df_dct['r2'].append(" ".join(row[1:-1])) 10 df_dct['r3'].append(row[-1]) 11data = pd.DataFrame(df_dct).set_index('r1') 12print(data) 13# r2 r3 14# r1 15# 1 [{'key1':'value1'} {'key2':'value2'}] 'a' 16# 2 [{'key1':'value1'} {'key2':'value2'} {'key3':'... 'b' 17# 3 [{'key1':'value1'}] 'c'

投稿2021/05/20 01:05

jeanbiego

総合スコア3966

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

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

0

ベストアンサー

おはようございます。

問題文読ませていただきました。

こんな感じでいかがでしょうか?

Python

1import pandas as pd 2import csv 3 4# csvについて : https://qiita.com/motoki1990/items/0274d8bcf1a97fe4a869 5csv_file = open("./test.csv", "r") 6f = csv.reader(csv_file, delimiter=",") 7 8output = [] 9for row in f: 10 count = len(row) 11 # joinについて : https://www.headboost.jp/python-strings-into-a-list/ 12 # listの区切りについて : https://www.javadrive.jp/python/list/index3.html 13 output.append([row[0], ' '.join(row[1:count - 1]), row[count - 1]]) 14 15print(pd.DataFrame(output, columns=['r1', 'r2', 'r3']))

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/05/20 00:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pen_ari

2021/05/20 01:14

お二人とも回答ありがとうございます 両端を残してリスト再生成するのですね やりたいことができそうな気がするので助かりました 先に回答頂いた方をベストアンサーとさせていただきます ありがとうございました。
退会済みユーザー

退会済みユーザー

2021/05/20 01:31

応援してます〜。 またわからないこととかありましたら、気軽にご相談ください〜!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問