質問
特定のデータフレームのみをフォーマットする方法はありますか?
単一のデータフレームの特定の列をフォーマットする例(例1)や、pandasライブラリ全体をデフォルトオプションに設定する例(例2)を見てきました。ただし、各列を明示的にリストせずに特定のデータフレームをフォーマットするオプションは見たことがありません。
セットアップ
import pandas as pd
import numpy as np
# Setup first example
data = np.random.random((3,4))
df = pd.DataFrame(data)
print df
# 0 1 2 3
#0 0.384326 0.364187 0.084034 0.012376
#1 0.114784 0.298068 0.087634 0.828207
#2 0.255923 0.438617 0.820652 0.266964
例1-単一のデータフレーム内の特定の列の形式を変更する
df[3] = df[3].map('${:,.2f}'.format)
print df
# 0 1 2 3
#0 0.384326 0.364187 0.084034 $0.01
#1 0.114784 0.298068 0.087634 $0.83
#2 0.255923 0.438617 0.820652 $0.27
例2-すべてのパンダデータフレーム(新しいものを含む)の形式を変更する
pd.options.display.float_format = '${:,.2f}'.format
print(df)
# 0 1 2 3
#0 $0.38 $0.36 $0.08 $0.01
#1 $0.11 $0.30 $0.09 $0.83
#2 $0.26 $0.44 $0.82 $0.27
data2 = np.random.random((4,3))
df2 = pd.DataFrame(data2)
print df2
# 0 1 2
#0 $0.60 $0.37 $0.86
#1 $0.28 $0.06 $0.97
#2 $0.19 $0.68 $0.99
#3 $0.06 $0.88 $0.82
例2のようなオプションを探していましたが、将来のデータフレームにフォーマットが適用されない点が異なります。ありがとう!
編集-申し訳ありませんが、フォーマットについてもっと明確にすべきでした。例1はデータ型を変更しますが、例2は変更しません。(可能であれば)データ型間で変換する必要がないことを望んでいました。たとえば、最初の例はfloatからnull以外のオブジェクトに変更されます。
df.info()
#<class 'pandas.core.frame.DataFrame'>
#Int64Index: 3 entries, 0 to 2
#Data columns (total 4 columns):
#0 3 non-null float64
#1 3 non-null float64
#2 3 non-null float64
#3 3 non-null object
#dtypes: float64(3), object(1)
このように列をループするのはどうですか?
for i in range(len(df.columns)):
df[i] = df[i].map('${:,.2f}'.format)
あるいは単に:
df.applymap('${:,.2f}'.format)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加