Python:将数据框的输出与屏幕/控制台的中心对齐

时间:2018-08-07 12:15:43

标签: python dataframe

我在python中编写了以下函数:

    def proc_summ(df,var_names_in,var_names_group):
        df['Freq']=1
        df_summed=pd.pivot_table(df,index=(var_names_group),
                   values=(var_names_in),
                   aggfunc=[np.sum],fill_value=0,margins=True,margins_name='Total').reset_index()
        df_summed.columns = df_summed.columns.map(''.join)
        df_summed.columns = [x.strip().replace('sum', '') for x in df_summed.columns]    
        string_repr = df_summed.to_string(index=False,justify='center').splitlines()    
        string_repr.insert(1, "-" * len(string_repr[0]))
        string_repr.insert(len(df_summed.index)+1, "-" * len(string_repr[0]))
        out = '\n'.join(string_repr)
        print(out)

下面是我用来调用该函数的代码:

    proc_summ (
            df,
            var_names_in=["Freq","sal"] ,
            var_names_group=["name","age"])

and below is the output:

name  age  Freq  sal
--------------------
 Arik  32    1   100
David  44    2   260
 John  33    1   200
 John  34    1   300
Peter  33    1   100
--------------------
Total        6   960

请让我知道如何将数据打印到屏幕中央:

                        name  age  Freq  sal
                        --------------------
                         Arik  32    1   100
                        David  44    2   260
                         John  33    1   200
                         John  34    1   300
                        Peter  33    1   100
                        --------------------
                        Total        6   960

1 个答案:

答案 0 :(得分:0)

如果您使用的是 Python3 ,则可以尝试类似的操作

 import shutil
 columns = shutil.get_terminal_size().columns
 print("hello world".center(columns))

在使用DataFrame时,您可以尝试类似的操作

import shutil
import pandas as pd

data = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data)

# convert DataFrame to string
df_string = df.to_string()
df_split = df_string.split('\n')

columns = shutil.get_terminal_size().columns
for i in range(len(df)):
   print(df_split[i].center(columns))