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

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

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

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

pandas

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

Q&A

解決済

1回答

3072閲覧

pandas dataframeへ行の追加

taro_yamada

総合スコア55

Python

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

pandas

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

0グッド

0クリップ

投稿2020/12/30 15:37

編集2020/12/30 22:53

pandasで集計した数値をdf_resultに保存してきたいと思っています。
1行追加するのに以下のようなソースを書いてみましたが、ValueError: cannot set a row with mismatched columnsのエラーが出ます。

 行数は合っていると思うのですが、いいやり方がないかご意見をお願いします。

ちなみに、集計の結果0のindexが出てくる(行が存在しない)こともあるので、df_sum3.locで拾えなくても行が挿入できるやり方で実行したいと思っています。

df_result

1a=1 2b=2 3c=3 4 5cols1 = ['A', 'B', 'C', '-10', '-9', '-8', '-7', '-6', '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] 6df_result = pd.DataFrame(index=[], columns=cols1) 7df_result = df_result.set_index('symbol', drop=False) 8 9df_result.loc[1] = [a, 10b, 11c, 12df_sum3.loc[-10, 'count'], 13df_sum3.loc[-9, 'count'], 14df_sum3.loc[-8, 'count'], 15df_sum3.loc[-7, 'count'], 16df_sum3.loc[-6, 'count'], 17df_sum3.loc[-5, 'count'], 18df_sum3.loc[-4, 'count'], 19df_sum3.loc[-3, 'count'], 20df_sum3.loc[-2, 'count'], 21df_sum3.loc[-1, 'count'], 22df_sum3.loc[0, 'count'], 23df_sum3.loc[1, 'count'], 24df_sum3.loc[2, 'count'], 25df_sum3.loc[3, 'count'], 26df_sum3.loc[4, 'count'], 27df_sum3.loc[5, 'count'], 28df_sum3.loc[6, 'count'], 29df_sum3.loc[7, 'count'], 30df_sum3.loc[8, 'count'], 31df_sum3.loc[9, 'count'], 32df_sum3.loc[10, 'count'] ]

Series

1-2 391861 2-3 375410 3-4 267750 4-5 190730 5 0 186412 6-10 117687 7-6 108464 8-1 107567 9-7 87025 10 2 83250 11-8 56191 12 3 46684 13 1 41035 14-9 36503 15 4 27422 16 5 17788 17 10 15180 18 6 11245 19 7 7979 20 8 5100 21 9 3754

dataFrame

1 count 2index 3-10 117687 4-9 36503 5-8 56191 6-7 87025 7-6 108464 8-5 190730 9-4 267750 10-3 375410 11-2 391861 12-1 107567 130 186412 141 41035 152 83250 163 46684 174 27422 185 17788 196 11245 207 7979 218 5100 229 3754 2310 15180

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

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

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

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

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

guest

回答1

0

ベストアンサー

cols1 = ['A', 'B', 'C', '-10', '-9', '-8', '-7', '-6', '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4' '5', '6' '7', '8' '9', '10']

の'4' '5'と'6' '7'と'8' '9'のところにカンマが抜けています。

値がないの意味が良くわかりませんが、ないんだったら適当な値を入れれば良いのでしょう。

python

1import numpy as np 2 3def correct(df, index, column, irregular=np.nan): 4 try: 5 return df.loc[index, column] 6 except Exception: 7 return irregular 8 9 10inputdata = [a, b, c] + [correct(df_sum3, i, 'count') for i in range(-10, 11)] 11

みたいなことを書けばよいのではないですか。

投稿2020/12/30 17:49

編集2020/12/30 23:57
ppaul

総合スコア24668

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

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

taro_yamada

2020/12/30 22:54

失礼しました。カンマを入れました。 さて、やっぱり、先には進めたのですが、値のないところでエラーに当たってしまいます。いい方法はないでしょうか? raise KeyError(key) from err KeyError: -8
taro_yamada

2020/12/31 06:03

ありがとうございました。 無事解決しました。 基本的なことかもしれませんが、一人だとなかなかアイデアが出なくて困っていました。 今後ともよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問