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

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

詳細はこちら
Python

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

Q&A

解決済

1回答

572閲覧

python データマインイング 0を消さずに表示したい!

ekTJ

総合スコア109

Python

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

0グッド

0クリップ

投稿2020/11/30 00:20

質問です。
このような
[20395089035130095 025838588000012785000013004 0013 000101000151]
数字の羅列データから必要な数字を抜くことは出来たのですが、「007」のような場合0が消えて「7」のようになってしまいます。
どのようにすれば0を保持したままデータを抜けるのでしょうか。

f = open(file_text.get(), 'r') colspecs = [(22,25), (25,28),(28,30),(30,32),(47,51)] names = ["SCAN", now.strftime("%Y%m%d"), now.strftime('%H%M%S'),"通番",sc,cc," "] # df = pd.read_fwf(f, skiprows=1,header=None, names=names,colspecs=colspecs, dtype=str) df.to_csv(cc+"_{}.csv".format(time), index= False,encoding="shift-jis")

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

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

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

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

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

bsdfan

2020/11/30 00:35

できたcsvをエディタで開いて確認したら、007が7になっているのでしょうか? csvをexcelで開いて確認したとかでしたら、excelが0を取り除いています。
ekTJ

2020/11/30 01:01

CSVをエクセル上で確認すると取り除かれています。 この場合、python側での処理は難しいでしょうか。
bsdfan

2020/11/30 02:15

pythonでできることとしては、df.to_csv()で quoting=csv.QUOTE_NONNUMERIC オプションをつけて、 csv中の値をダブルクォートで囲んでやる(文字列として扱うようにする)ぐらいですが、 それをやってもexcelは0を取り除いてしまいますので、今回の場合は効果がありません。 (今回の例では、全列が文字列になっているので、全データがクォートされてしまうことになるので注意) excelでファイルを開くときに工夫するしかないです(外部データの取り込み)。 このページとかが参考になるかと。 https://www.excelspeedup.com/csvmojiretsu/
kirara0048

2020/11/30 02:21

一応、「007」を「="007"」にするとExcelで開いた時に「007」という文字列で読み込んでくれます。 df.applymap(lambda x: f'="{x}"').to_csv(...) ということですね。
bsdfan

2020/11/30 02:29

kirara0048さんの方法でやると、他のアプリからは使えないcsvになってしまうんですよね。
ekTJ

2020/11/30 02:50

やはり、0を保持するのは厳しいのでしょうか?
bsdfan

2020/11/30 03:00

今のままでも、csvファイルにはちゃんと0がはいっているはずです。 (csvファイルをエディタで開いて確認してみてください。) excelで開いたときに0がなくなるのは、excelの問題なので、excel側で対応するのが良いです。
ekTJ

2020/11/30 03:06

そうなんです。テキストだと0が表示されます。困りました。 ひとまず、ありがとうございます。
bsdfan

2020/11/30 03:22

やりたいことがexcelで確認したいだけでしたら、df.to_excel()でxlsxファイルに出してしまうのも手です。
ekTJ

2020/11/30 03:49

CSVで出力したのち、再度別のシステムで読み込むので「0」を表示するのは必須だったのです。
guest

回答1

0

ベストアンサー

dtype を str ではなく object で試してみたらどうでしょう.

同じく頭の0が抜けてしまう対策の例を見つけました↓
https://qiita.com/haru1977/items/53c582eb9e264ccf8574

投稿2020/12/01 06:22

wakach

総合スコア15

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

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

ekTJ

2020/12/01 07:54

ありがとうございます。 実はその方法で先に試していたのですが、ダメだったのです・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問