1. ホーム
  2. パイソン

[解決済み】Pandasの集計結果から科学的記法をフォーマットする/抑制する

2022-04-08 19:21:33

質問

非常に大きな数の科学的記数法を生成するpandasのgroupby操作からの出力のフォーマットを変更するにはどうすればよいですか?

Pythonで文字列のフォーマットをする方法は知っているのですが、それをここに適用するとなると途方に暮れてしまいます。

df1.groupby('dept')['data1'].sum()

dept
value1       1.192433e+08
value2       1.293066e+08
value3       1.077142e+08

これで文字列に変換すると科学的記法が抑制されるのですが、今は文字列フォーマットと小数の追加をどうするかで悩んでいます。

sum_sales_dept.astype(str)

解決方法は?

尤も、コメントでリンクした回答はあまり参考になりませんが。このように自分で文字列変換を指定することができます。

In [25]: pd.set_option('display.float_format', lambda x: '%.3f' % x)

In [28]: Series(np.random.randn(3))*1000000000
Out[28]: 
0    -757322420.605
1   -1436160588.997
2   -1235116117.064
dtype: float64

これが望ましい方法かどうかはわかりませんが、うまくいきました。

純粋に美観のために数字を文字列に変換するのは良くないように思えますが、正当な理由があるのなら、これも一つの方法です。

In [6]: Series(np.random.randn(3)).apply(lambda x: '%.3f' % x)
Out[6]: 
0     0.026
1    -0.482
2    -0.694
dtype: object