열의 형식 문자열을 사용하여 수레의 팬더 DataFrame을 표시하는 방법은 무엇입니까?
print()
IPython과를 사용하여 주어진 형식으로 팬더 데이터 프레임을 표시하고 싶습니다 display()
. 예를 들면 다음과 같습니다.
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
print df
cost
foo 123.4567
bar 234.5678
baz 345.6789
quux 456.7890
어떻게 든 이것을 인쇄로 강제하고 싶습니다.
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
데이터 자체를 수정하거나 사본을 만들 필요없이 표시되는 방식을 변경하십시오.
어떻게해야합니까?
import pandas as pd
pd.options.display.float_format = '${:,.2f}'.format
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
print(df)
수확량
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
그러나 이것은 모든 부동 소수점을 달러 기호로 형식화 하려는 경우에만 작동합니다 .
그렇지 않으면 일부 부동 소수점에 대해서만 달러 형식을 원한다면 데이터 프레임을 사전 수정해야합니다 (수레를 문자열로 변환).
import pandas as pd
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
df['foo'] = df['cost']
df['cost'] = df['cost'].map('${:,.2f}'.format)
print(df)
수확량
cost foo
foo $123.46 123.4567
bar $234.57 234.5678
baz $345.68 345.6789
quux $456.79 456.7890
데이터 프레임을 수정하지 않으려는 경우 해당 열에 사용자 정의 포맷터를 사용할 수 있습니다.
import pandas as pd
pd.options.display.float_format = '${:,.2f}'.format
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
print df.to_string(formatters={'cost':'${:,.2f}'.format})
수확량
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
As of Pandas 0.17 there is now a styling system which essentially provides formatted views of a DataFrame using Python format strings:
import pandas as pd
import numpy as np
constants = pd.DataFrame([('pi',np.pi),('e',np.e)],
columns=['name','value'])
C = constants.style.format({'name': '~~ {} ~~', 'value':'--> {:15.10f} <--'})
C
which displays
This is a view object; the DataFrame itself does not change formatting, but updates in the DataFrame are reflected in the view:
constants.name = ['pie','eek']
C
However it appears to have some limitations:
Adding new rows and/or columns in-place seems to cause inconsistency in the styled view (doesn't add row/column labels):
constants.loc[2] = dict(name='bogus', value=123.456) constants['comment'] = ['fee','fie','fo'] constants
which looks ok but:
C
Formatting works only for values, not index entries:
constants = pd.DataFrame([('pi',np.pi),('e',np.e)], columns=['name','value']) constants.set_index('name',inplace=True) C = constants.style.format({'name': '~~ {} ~~', 'value':'--> {:15.10f} <--'}) C
Similar to unutbu above, you could also use applymap
as follows:
import pandas as pd
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
df = df.applymap("${0:.2f}".format)
I like using pandas.apply() with python format().
import pandas as pd
s = pd.Series([1.357, 1.489, 2.333333])
make_float = lambda x: "${:,.2f}".format(x)
s.apply(make_float)
Also, it can be easily used with multiple columns...
df = pd.concat([s, s * 2], axis=1)
make_floats = lambda row: "${:,.2f}, ${:,.3f}".format(row[0], row[1])
df.apply(make_floats, axis=1)
summary:
df = pd.DataFrame({'money': [100.456, 200.789], 'share': ['100,000', '200,000']})
print(df)
print(df.to_string(formatters={'money': '${:,.2f}'.format}))
for col_name in ('share',):
df[col_name] = df[col_name].map(lambda p: int(p.replace(',', '')))
print(df)
"""
money share
0 100.456 100,000
1 200.789 200,000
money share
0 $100.46 100,000
1 $200.79 200,000
money share
0 100.456 100000
1 200.789 200000
"""
'Programming' 카테고리의 다른 글
JPA CascadeType.ALL은 고아를 삭제하지 않습니다. (0) | 2020.06.30 |
---|---|
푸시 또는 구성 변경없이 Heroku 슬러그를 다시 컴파일 (0) | 2020.06.30 |
UIStackView의 배경색을 변경하는 방법은 무엇입니까? (0) | 2020.06.30 |
가져 오기 javax.servlet을 해결할 수 없습니다. (0) | 2020.06.30 |
javascript에서 배열의 요소를 어떻게 설정 해제합니까? (0) | 2020.06.30 |