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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

34018閲覧

既存のCSVファイル2列めにデータを追加したい

Yukiya025

総合スコア86

CSV

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

Python 3.x

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

0グッド

3クリップ

投稿2018/10/04 04:53

編集2018/10/04 12:31

こんにちは! 自然言語処理をかけてcsvに登場回数順に出力したロシア語をgoogletransにかけ、列の3番めに日本語訳を追記したいのですが、うまく列を指定できません。

どうしたら2列めに日本語訳が入るようになるでしょうかorz

開発環境

  • Linux Mint19 ”Tara” Cinammon
  • Pycharm
  • Python3.6.6

現在の出力結果と望んでいる結果

現在の出力結果

present

望んでいる結果
desire

該当するコード

python

1# -*- coding: utf-8 -*- 2from nltk import FreqDist 3import pymorphy2 4import csv 5import re 6 7import del_words 8from csvScraping import show_word 9 10downloadtxt = open('26and1.txt', 'r', encoding = 'utf-8-sig') 11texts = downloadtxt.read() 12texts = re.sub('[.,?!()\'—]', ' ', texts) 13texts = texts.split() 14 15analyzer = pymorphy2.MorphAnalyzer() 16 17lemma_list = [] 18for text in texts: 19 lemma = analyzer.parse(text)[0].normal_form 20 lemma_list.append(lemma) 21 22lemma_list = list(filter(lambda d: d not in (str(del_words.del_w)), lemma_list)) 23freqdist = FreqDist(lemma_list) 24freqdist_list = freqdist.most_common(10) # 900 25print(freqdist_list) 26with open('26and1.csv', 'w', encoding = 'utf-8-sig') as file: 27 writer = csv.writer(file, lineterminator = '\n') 28 writer.writerow(['Ру','Ном','Яп']) 29 for n in range(0, len(freqdist_list)): 30 writer.writerows([freqdist_list[n]]) 31pass 32 33show_word() # csvScraping.py

python

1# csvScraping.py 2import pandas as pd 3import csv 4from googletrans import Translator 5 6def show_word(): 7 csv_input = pd.read_csv(filepath_or_buffer= r'26and1.csv', sep=",") 8 9 with open('26and1.csv', 'r', encoding='utf-8-sig') as file: 10 for i in range(0, 10): 11 ru = csv_input.iloc[i, 0] 12 translator = Translator() 13 ru_ja = translator.translate(ru, 'ja') 14 ja = ru_ja.text 15 print(ja)

print(ja)の部分をcsvのファイル操作に差し替えればよいのかとは思うのですが、「n列目を指定してそこにデータを追記」という方法が見つけられませんorz
よろしくお願いします。

できましたー(≧∇≦)b

csvScraping.pyのみの変更です。
csvの内容['項目名'][index番号] で指定<3

python

1# csvScraping.py 2import pandas as pd 3from googletrans import Translator 4 5def show_word(): 6 csv_input = pd.read_csv('26and1.csv', sep=",") 7 csv_input['Яп'] = '' 8 9 for index, row in csv_input.iterrows(): 10 ru = csv_input.iloc[index, 0] 11 translator = Translator() 12 ru_ja = translator.translate(ru, 'ja') 13 ja = ru_ja.text 14 csv_input['Яп'][index] = ja 15 16 csv_input.to_csv('26and1.csv', index=False)

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

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

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

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

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

guest

回答1

0

ベストアンサー

pandas を使う例と標準モジュールの csv を使う例を書きました。

pandas を使わない場合のサンプルコード

python

1import csv 2 3data = [ 4 ['apple', 1], 5 ['pen', 2], 6 ['pineapple', 3], 7] 8 9# 列を追加 10for row in data: 11 row.append('new_data') # 参照なので、data に反映される。 12print(data) 13# [['apple', 1, 'new_data'], ['pen', 2, 'new_data'], ['pineapple', 3, 'new_data']] 14 15with open('test.csv', 'w') as f: 16 writer = csv.writer(f) 17 writer.writerows(data) 18 19print(open('test.csv').read()) 20# apple,1,new_data 21# pen,2,new_data 22# pineapple,3,new_data 23

pandas を使う場合のサンプルコード

python

1import pandas as pd 2 3data = pd.read_csv('test.csv', sep=",") 4# 予め列を挿入しておく必要がある。 5data['new_column'] = '' 6 7# 列に値を代入 8for index, row in data.iterrows(): 9 data['new_column'][index] = 'hoge' 10 11data.to_csv('test.csv', index=False) 12 13print(open('test.csv').read()) 14# name,count,new_column 15# apple,1,hoge 16# pen,2,hoge 17# pineapple,3,hoge

投稿2018/10/04 05:56

tiitoi

総合スコア21956

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

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

Yukiya025

2018/10/04 12:34

tiitoiさん、こんばんは! ありがとうございます、できましたー(≧∇≦)b pandasを使う方法で日本語訳が2列めに追記できました<3
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問