実現したいこと
M1.csvは以下のようなファイルです。
1 0 2
M2.csvは以下のようなファイルです。
3 0 4
M1.csvとM2.csvを横にくっつけて、要素値が0の行を削除したいと考えています。欲しい結果は以下の通りです。
1 3 2 4
「該当のソースコード」の状態ではエラーが出ます。「試したこと」のようにすれば解決するのですが、計算時間短縮のためにも書き出すことは避けたいです。どなたかコードを直してください。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "〇〇〇\testCV573.py", line 27, in <module> C2 = C[np.ix_(~np.all(C == 0, axis=1), ~np.all(C == 0, axis=0))] ~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "〇〇〇\pandas\core\frame.py", line 4113, in __getitem__ indexer = self.columns.get_loc(key) File "〇〇〇\pandas\core\indexes\range.py", line 417, in get_loc raise KeyError(key) KeyError: (array([[0], [2]]), array([[0, 1]]))
該当のソースコード
python
1import numpy as np 2import pandas as pd 3import glob 4 5files = glob.glob('M*.csv') 6print(files)#['M1.csv', 'M2.csv'] 7 8C = [] 9 10# ファイルを一つずつ読み込み、リストに追加 11for file in files: 12 df = pd.read_csv(file, header=None) 13 C.append(df) 14 15# DataFrameを横に結合 16C = pd.concat(C, axis=1, ignore_index=True) 17 18C2 = C[np.ix_(~np.all(C == 0, axis=1), ~np.all(C == 0, axis=0))] 19np.savetxt('C2.csv', C2, delimiter=",", fmt='%f')
試したこと
17行目に以下を入れると回るのですが、できれば一回書き出すことはしたくないです。
python
1filenamecsv = "C.csv" 2np.savetxt(filenamecsv, C, delimiter=",") 3C = np.loadtxt('C.csv', dtype=float, delimiter=',')
回答2件
あなたの回答
tips
プレビュー
2025/12/15 09:08 編集