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

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

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

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

Q&A

解決済

1回答

4485閲覧

python: ValueError: Shape of passed values is (4, 10), indices imply (4, 309)

Tubasa1995

総合スコア83

Python

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

0グッド

0クリップ

投稿2020/08/22 08:22

編集2020/08/22 10:45

下記のコードを書くと下記のようなエラーが出てきます。
どこを直せばよいのでしょうか。

今、
burdenhight.csvは11行1列のcsvファイル、
cf_lstは4行309列のファイルです。

出力されるファイルとして期待しているものは
4行11列のファイルになります。

burden_hight = pd.read_csv('burdenhight.csv', header=None) cf_lst = pd.DataFrame(cf_lst) cf_layer_X = [] for i in range(11): burdenhight = burden_hight.iloc[i] cf_X = cf_lst.apply(lambda r: (sum(r[7+28*i:14+28*i]) - sum(r[21+28*i:28+28*i]))/(0.1*0.3*burdenhight), axis=1) cf_layer_X.append(cf_X)

###修正してみたコード

burden_hight = pd.read_csv('burdenhight.csv', header=None) cf_lst = pd.DataFrame(cf_lst) cf_layer_X = [] for i in range(11): burdenhight = burden_hight.iloc[i] cf_X = cf_lst.apply(lambda r: (sum(r[7+28*i:14+28*i]) - sum(r[21+28*i:28+28*i]))/(0.1*0.3*burdenhight), axis=1) print(len(cf_layer_X)) cf_layer_X.append(cf_X) cf_layer_X = np.array(cf_layer_X).T cf_layer_X_with_label = pd.DataFrame(cf_layer_X)
File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 4152, in apply return self._apply_standard(f, axis, reduce=reduce) File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 4265, in _apply_standard result = self._constructor(data=results, index=index) File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 266, in __init__ mgr = self._init_dict(data, index, columns, dtype=dtype) File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 402, in _init_dict return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype) File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 5403, in _arrays_to_mgr arrays = _homogenize(arrays, index, dtype) File "C:\Python27_2017\lib\site-packages\pandas\core\frame.py", line 5714, in _homogenize raise_cast_failure=False) File "C:\Python27_2017\lib\site-packages\pandas\core\series.py", line 2952, in _sanitize_array subarr = _asarray_tuplesafe(data, dtype=dtype) File "C:\Python27_2017\lib\site-packages\pandas\core\common.py", line 392, in _asarray_tuplesafe result[:] = [tuple(x) for x in values] TypeError: 'numpy.int64' object is not iterable

burdenhight.csvの中身

0.01375 0.0175 0.02625 0.035 0.035 0.035 0.035 0.035 0.02625 0.0175 0.02375

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

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

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

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

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

can110

2020/08/22 08:32

登場するいくつかの変数が不明なので print(number_of_probe_layer), print(width_build), print(average_dypre)の各結果を記載ください。
Tubasa1995

2020/08/22 08:43

いくつか分かりやすいように訂正しました。
can110

2020/08/22 08:50

修正されたコードでも同様のエラーが発生しますでしょうか? エラー文もコードに合わせて更新ください。
Tubasa1995

2020/08/22 08:51

申し訳ありません。 いくつか修正をしていたら エラー内容が変わってしましました。 そちらも載せております。
Tubasa1995

2020/08/22 08:56

何度も修正してしましすいません。。。
can110

2020/08/22 09:14

「cf_lst = pd.DataFrame(np.arange(4*309, dtype=float).reshape(4,309))」 といった適当なデータで試してみましたが、エラーなく実行できました。 もしかしてPythonのバージョンは3.xではなく2.7でしょうか?
Tubasa1995

2020/08/22 09:15

2.7でやっております
Tubasa1995

2020/08/22 09:18

いろいろ修正しなおして また新しく別の質問に書き直したので そちらを見ていただけませんか?
Tubasa1995

2020/08/22 10:46

すいません、たしかに示しているコードは実行できていますね、、、、 ただ、そのあと転地をしてファイルに出力するところができないのですが なにがいけませんか?
guest

回答1

0

ベストアンサー

cf_X = cf_lst.apply(~の結果はpandas.Seriesになっていますので
cf_layer_X.append(cf_X)cf_layer_X.append(cf_X[0])とすればエラーなく求める形のデータフレームが得られます。

投稿2020/08/22 11:07

can110

総合スコア38341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問