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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

pandas

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

Q&A

解決済

1回答

778閲覧

データフレーム内の文字表記の単位を数値に置換する方法

Kiiiii

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

pandas

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

0グッド

0クリップ

投稿2021/09/17 14:04

前提・実現したいこと

Python初学者でデータフレームに関する質問です。

下記のようなデータフレーム内の小数点第二位までの数値を維持した状態でK,M,Bを数値として扱えるように全体を置換したいです。
K->1,000、M->1,000,000、B->1,000,000,000 を意味しています。

|index|列1|列2|列3|列4|列5|列6|列7|列8|列9|
|:--|:--:|--:|
|0|4.22M|3.21B|0|0|2.45M|-2.22K|8.24M|2.11M|3.87K|
|...|...|...|...|...|...|...|...|...|...|...|
|4900|9.02K|3.01M|56|-1|2.01M|7.29M|8.24B|-2.00M|5.67K|

[置換例]
3.87K -> 3870
4.22M -> 4220000
3.21B -> 3210000000

試したこと

小数点以下をなくせば、文字部分を相当数の「0」に置換すれば良いと思いましたが、小数点以下を維持した状態で置換例のようにうまく変換することができず悩んでおります。
ご教授よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Python 3.9.5
Pandas 1.3.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

pandasのappymap()を使えばできます。
lamda式が思い浮かばなかったので、関数を作成しました。
データチェックはしていません。

ipython

1In [14]: import pandas as pd 2 ...: def conv(d): 3 ...: if 'K' in d: 4 ...: return int(float(d[:-1]) * 1000) 5 ...: if 'M' in d: 6 ...: return int(float(d[:-1]) * 1000000) 7 ...: if 'G' in d: 8 ...: return int(float(d[:-1]) * 1000000000) 9 ...: return int(float(d)) 10 ...: df = pd.DataFrame({'列1': ['4.22M', '0', '3.2G'], '列2': ['-1', '0.5K', '3.5G']}) 11 ...: print(df) 12 ...: print() 13 ...: print(df.applymap(conv)) 14 ...: 15 列1 列2 160 4.22M -1 171 0 0.5K 182 3.2G 3.5G 19 20 列1 列2 210 4220000 -1 221 0 500 232 3200000000 3500000000 24 25In [15]:

投稿2021/09/17 14:54

ikapy

総合スコア1167

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

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

Kiiiii

2021/09/17 15:14

ありがとうございます。こんな方法があるんですね。 ご教授いただいた方法で実際のデータもうまく変換が出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問