🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Q&A

解決済

1回答

732閲覧

pandasのdf.to_csvで追加した物から順に左側に列を追加していきたいです。

amaturePy

総合スコア131

Python 3.x

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

0グッド

0クリップ

投稿2021/02/09 08:42

編集2021/02/09 08:47

Pythonを使ってAPIを開発しています。
その中でpandasの.to_csv実行時に入れた列データから順に左側に列を追加していく方法を探してます。
変数dfの中身をQ4_start,Q3_start,Q2_start,Q1_startの順で左側に挿入していきたいです。
pandasで使えそうな機能、もしくはpythonの中で付け加えるべき処理などあればご教授頂ければ幸いです。
よろしくお願いします。

print(df)結果 Q4_start 0 1 2 1 3 1 Q3_start 0 1 2 1 3 1 Q2_start 0 1 2 1 3 1 Q1_start 0 1 2 1 3 1
理想のCSV Q1_start | Q2_start | Q3_start | Q4_start 現在の実行結果 Q1_start(同一列に対してQ4から更新されていきQ1だけ残ってます)
def fun1(): file0 = "./test.csv" client = bigquery.Client() tableName = "test2" tagName = "msajhdh5awiQ" tag_list = [] if "Q" in tagName: nums = re.sub("\D", "", tagName) for num in reversed(range(1,int(nums))): query = "SELECT Q{0}_start FROM `test_table.{1}`".format(num,tableName) job_config = bigquery.QueryJobConfig( query_parameters=[ bigquery.ScalarQueryParameter("tableName", "STRING", tagName), bigquery.ScalarQueryParameter("tagName", "STRING", tagName) ] ) query_job = client.query(query) df = query_job.result().to_dataframe() # df.shift(-1, axis=1) df.to_csv(file0, sep='\t')

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

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

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

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

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

guest

回答1

0

ベストアンサー

forループの中ではDataFrameを貯めておき、forループを抜けてからpandas.DataFrame, Seriesを連結するconcatを使って横向きに連結してdf.to_csv を一回だけ行えば良いと思います。

動作確認はできませんが、以下のような感じです。

python

1def fun1(): 2 file0 = "./test.csv" 3 client = bigquery.Client() 4 tableName = "test2" 5 tagName = "msajhdh5awiQ" 6 tag_list = [] 7 if "Q" in tagName: 8 nums = re.sub("\D", "", tagName) 9 10 df_list = [] 11 for num in reversed(range(1,int(nums))): 12 query = "SELECT Q{0}_start FROM `test_table.{1}`".format(num,tableName) 13 14 job_config = bigquery.QueryJobConfig( 15 query_parameters=[ 16 bigquery.ScalarQueryParameter("tableName", "STRING", tagName), 17 bigquery.ScalarQueryParameter("tagName", "STRING", tagName) 18 ] 19 ) 20 21 query_job = client.query(query) 22 df = query_job.result().to_dataframe() 23 df_lis.insert(0, df) 24 # df.shift(-1, axis=1) 25 df_all = pd.concat(df_list, axis=1) 26 df_all.to_csv(file0, sep='\t')

投稿2021/02/09 09:06

編集2021/02/09 11:50
ppaul

総合スコア24670

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

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

amaturePy

2021/02/09 10:39 編集

ありがとうございます! すみません。一点gyo2,d3,d4のgyoでSyntaxErrorが出てるのですが、gyo2,d3,d4これは列数を指定しているのでしょうか??
ppaul

2021/02/09 11:26

すみません。 別のエディタで編集してコピペしたときのミスでした。 削除しました。
amaturePy

2021/02/09 11:35

承知しました! df.to_csv(file0, sep='\t')はdf_all.to_csv(file0, sep='\t')でよろしいでしょうか!?
ppaul

2021/02/09 11:49

はい、そうです。回答も直しておきます。
amaturePy

2021/02/10 02:06

ありがとうございます!! とても参考になります! 理想のCSV作成できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問