我是 Pandas 的新手,看到有很多方法可以更改列标题。例如,该set_axis
命令的工作方式如下:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.arange(3),columns=['a'])
>>> df
a
0 0
1 1
2 2
>>> df["a"][0]
0
>>> df.set_axis(['A'],axis=1,inplace=True)
>>> df
A
0 0
1 1
2 2
>>> df["A"][0]
0
Run Code Online (Sandbox Code Playgroud)
编辑:或者,可以使用
df.columns = ['A']
Run Code Online (Sandbox Code Playgroud)
更改列名称。
但是现在,如果我只想为了显示目的而更改列标题(因为标题标签不方便用作字典键),我必须创建一个全新的数据框:
>>> df_pretty = df.set_axis(['Long label (%)'],axis=1,inplace=False)
df_pretty
Long label (%)
0 0
1 1
2 2
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?或者我错过了什么?为了打印而重新创建一个新的数据帧似乎是在浪费内存。我原以为 Pandas 有办法存储内部“键”和单独的列标签,仅用于显示目的。
@JohnE 发布的解决方案看起来是最好的方法。
我还想使用格式字符串,因此请在此处添加更多详细信息:
import pandas
df = pandas.DataFrame({'a' : [1,2,3],'b' : [4,5,6]})
di = {'a' : 'A (J/K*kg)', 'b' : 'B (N/m^2)'}
fstr = {di["a"] : '{:6.2f}', di["b"]:'{:5.2e}'}
df.rename(columns=di).style.format(fstr)
Run Code Online (Sandbox Code Playgroud)
这在 Juptyer 笔记本中呈现,看起来很完美,并且完全符合我的要求。
但是,当我在 Python 提示符下尝试相同的代码时,样式器不会呈现。
>>> import pandas
>>> df = pandas.DataFrame({'a' : [1,2,3],'b' : [4,5,6]})
>>> di = {'a' : 'A (J/K*kg)', 'b' : 'B (N/m^2)'}
>>> fstr = {di["a"] : '{:6.2f}', di["b"]:'{:5.2e}'}
>>> df.rename(columns=di).style.format(fstr)
<pandas.io.formats.style.Styler object at 0x105812eb8>
Run Code Online (Sandbox Code Playgroud)
编辑:在交互模式下(不是在 Jupyter 笔记本中),HTML 格式不显示,而且 Pandas 似乎没有表格的基本 ascii 输出样式。
归档时间: |
|
查看次数: |
1854 次 |
最近记录: |