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

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

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

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

Q&A

2回答

865閲覧

pandasで「,」を「 」(半角スペース)に置換したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2020/07/28 07:11

編集2020/07/28 07:25

前提・実現したいこと

下記のファイルの最初の行の「,,,,」と各行の一番右と左の「,」を削除したいです。
そして数時間にある「,」を「 」(半角の空白)にしたいです。

下記コードを書いて、コードは回るのですが
出力してみると「,,,,」や「,」などが消えていません。

なにがいけないかご教授お願いします。
ただ、

読み込むファイル「U」

(,,,, (,4.4890e+00,3.7538e-15,8.6703e-02,) (,1.2460e+01,1.1925e-14,-7.9250e-01,) (,1.1606e+01,-2.4358e-14,2.8788e-02,) (,1.1515e+01,9.4202e-16,-2.2987e+00,) (,1.2829e+01,-5.7017e-15,-3.7514e-01,)

該当のソースコード

import pandas as pd df = pd.read_csv('U', delim_whitespace=True, comment='#', names=['X', 'Y', 'Z', 'W', 'V']) df = df.replace(',,,,', '') df = df.replace(',', ' ') df.to_csv('test.u.csv', header=False, index=False)

ほしい結果

( (4.4890e+00 3.7538e-15 8.6703e-02) (1.2460e+01 1.1925e-14 -7.9250e-01) (1.1606e+01 -2.4358e-14 2.8788e-02) (1.1515e+01 9.4202e-16 -2.2987e+00) (1.2829e+01 -5.7017e-15 -3.7514e-01)

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

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

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

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

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

can110

2020/07/28 07:19

「1459」という行が見当たりませんので確認願います。 また、提示された入力に対して欲しい出力結果がいまいち分からないので、(空白が消えないように)コードブロックで囲んで提示ください。
退会済みユーザー

退会済みユーザー

2020/07/28 07:22

すいません! その部分は完全に消し忘れで まったく関係のない部分です。 (消しました)
退会済みユーザー

退会済みユーザー

2020/07/28 07:25

ほしい結果を追加しました。
guest

回答2

0

pandasは整形された行列形式のファイルの扱いには長けていますが、提示のような処理にはあまり向いていません。
むしろ以下のように行単位にテキスト処理したほうがよいかと思います。

Python

1with open('U') as f: 2 lines = f.readlines() 3 4with open('U.txt', 'w') as f: # テスト。上書きしないように 5 for line in lines: 6 line = line.replace(',,,,', '') 7 line = line.replace('(,','(') 8 line = line.replace(',)',')') 9 line = line.replace(',', ' ') 10 f.write(line)

U.txt

( (4.4890e+00 3.7538e-15 8.6703e-02) (1.2460e+01 1.1925e-14 -7.9250e-01) (1.1606e+01 -2.4358e-14 2.8788e-02) (1.1515e+01 9.4202e-16 -2.2987e+00) (1.2829e+01 -5.7017e-15 -3.7514e-01)

投稿2020/07/28 07:36

can110

総合スコア38341

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

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

0

can110さんもおっしゃられていますが、pandasはエクセルのような表データでの入力を前提と上で処理が行われるので、元の入力データを変換してから、あげていただいているコードを実行してもらうか、1行ずつ処理していくということがいいと思います。

投稿2020/07/28 15:36

crinoid

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問