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

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

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

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

Q&A

解決済

3回答

967閲覧

pyhthonでデータフレーム の各要素に関数を適応する

KojiroYamamoto

総合スコア21

Python 3.x

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

0グッド

0クリップ

投稿2018/07/29 04:08

データフレームの各要素に引数と一緒に関数を適応したいです。
具体的には、データフレームの要素が小数点のfloat型になっているのですが、小数点第一で四捨五入したいです。

python

1df.applymap(round)

とすると整数になってしまうので、引数1を渡したいのですが、どのようにしたら良いでしょうか?
他の方法でも構いません。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

DataFrameクラスはround() Methodを持ってますのでapplymap() を使う必要はありません

http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.DataFrame.round.html

Python

1df.round(1)

投稿2018/07/30 01:39

magichan

総合スコア15898

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

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

0

functools.partial()を利用して書けます。

python

1>>> import numpy as np 2>>> a = (np.arange(9)*0.333).reshape(3,3) 3>>> import pandas as pd 4>>> df = pd.DataFrame(a) 5>>> a 6array([[0. , 0.333, 0.666], 7 [0.999, 1.332, 1.665], 8 [1.998, 2.331, 2.664]]) 9>>> df.applymap(round) 10 0 1 2 110 0 0 1 121 1 1 2 132 2 2 3 14>>> from functools import partial 15>>> df.applymap(partial(round, ndigits=1)) 16 0 1 2 170 0.0 0.3 0.7 181 1.0 1.3 1.7 192 2.0 2.3 2.7

参考:
10.2. functools — 高階関数と呼び出し可能オブジェクトの操作 — Python 3.6.5 ドキュメント #functools.partial
Python で部分適用 - functools モジュールの partial 関数 | すぐに忘れる脳みそのためのメモ

投稿2018/07/29 13:05

hayataka2049

総合スコア30933

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

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

0

ベストアンサー

lambda式を使う方法。

python

1df.applymap(lambda x:round(x, 0))

投稿2018/07/29 04:28

tachikoma

総合スコア3601

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問