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

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

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

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

Q&A

解決済

2回答

4592閲覧

Python:DataFrameの小数点以下の扱い方について

TeRa_130

総合スコア61

Python

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

0グッド

1クリップ

投稿2019/07/06 16:18

前提・実現したいこと

Pythonを使用しています。

  • 実現したい内容 …

 df['a']だけに対して小数点以下を消去したいです。

 下記の方法を試したところ、df['a']だけだけではなくdf['b']も
小数点以下を消去してしまいました。

実行したコードとその結果

実行したコード

このようなコードを実行しました。

python

1In[]: 2import numpy as np 3import pandas as pd 4 5a = np.arange(100,110) 6b = np.arange(110.0,120.0) 7df = pd.DataFrame({'a': a, 'b': b}) 8 9df['a'] = df['a'] / 10 10 11pd.options.display.float_format = '{:.0f}'.format 12 13df

実行した結果

上記のコードを実行した結果、
以下のようになりました。

python

1Out[]: 2 3 a b 40 10 110 51 10 111 62 10 112 73 10 113 84 10 114 95 10 115 106 11 116 117 11 117 128 11 118 139 11 119

本来得たい結果

望んでいた実行結果は以下の通りです。

python

1Out[]: 2 3 a b 40 10 110.0 51 10 111.0 62 10 112.0 73 10 113.0 84 10 114.0 95 10 115.0 106 10 116.0 117 10 117.0 128 10 118.0 139 10 119.0

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

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

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

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

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

guest

回答2

0

まず、pd.options.display.float_format = '{:.0f}'.formatは表示フォーマットを変更するだけで、データとしては浮動小数点数型のまま変わらないということは理解していますか?

それを理解した上で、「a列の表示フォーマットだけ変えたい」のか「a列を整数型にしたい」のかはどちらでしょうか?

前者の場合:軽く調べた範囲では、できる方法はないように思います。

後者の場合:df['a'] = df['a'].astype(int)のように型変換することで可能です。

投稿2019/07/06 16:59

hayataka2049

総合スコア30933

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

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

TeRa_130

2019/07/09 06:44

ありがとうございます。 あまり理解せず使ってしまいました。 後者の場合を想像していました。
guest

0

ベストアンサー

このようなコードでよろしいでしょうか。

import numpy as np import pandas as pd a = np.arange(100,110) b = np.arange(110.0,120.0) df = pd.DataFrame({'a': a, 'b': b}) pd.options.display.float_format = '{:.1f}'.format df['a'] = df['a'] / 10 df = df.astype({'a': int}) df

以下、参考のURLになります。ポイントは、.float_formatしてからa列だけ.astypeで int型に直しています。
https://note.nkmk.me/python-pandas-option-display/
https://qiita.com/driller/items/af1369a5c0fc2ec61af3

投稿2019/07/06 16:54

bamboo-nova

総合スコア1408

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

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

TeRa_130

2019/07/09 06:46

ありがとうございます。 astypeという型変換の引数があるのですね。 参考URLまでありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問