格式化最大输出pandas

时间:2016-11-03 18:02:36

标签: python pandas formatting

我是熊猫新手,所以我对它的运作方式有点不熟悉。我已经处理了一些数据并获得了我想要的结果,但是,我无法弄清楚如何使用print格式化输出。例如,我只想显示某些数据行,以及将某些值放入()。

从这样做:

df = pd.read_csv('data_file.csv')

tallmen = df[df['gender'] == 'M'].nlargest(2, 'height')

这是我通过打印获得的输出(tallmen):

    id    name            gender  state       height
6   5        Smith, Bob   M       New York    73.5
2   7     Wright, Frank   M       Kentucky    75.2

这是我想要的输出:

Smith, Bob (M)  6' 1.5"
Wright, Frank (M)  6' 3.2"

当我尝试使用高人作为字典时,这给了我一个错误。所以我不太清楚该怎么做。另外,有一种方法让我能够操纵高度值,以便我可以重新格式化它们(也就如下所示以ft格式显示它们)?

2 个答案:

答案 0 :(得分:0)

您可以这样创建新列:

In [207]: df
Out[207]:
   id           name gender     state  height
6   5     Smith, Bob      M  New York    73.5
2   7  Wright, Frank      M  Kentucky    75.2

In [208]: df['new'] = (
     ...:     df.name + ' (' + df.gender + ') ' +
     ...:     (df.height // 12).astype(int).astype(str) +
     ...:         "' " + (df.height % 12).astype(str) + '"')
     ...:

In [209]: df
Out[209]:
   id           name gender     state  height                        new
6   5     Smith, Bob      M  New York    73.5     Smith, Bob (M) 6' 1.5"
2   7  Wright, Frank      M  Kentucky    75.2  Wright, Frank (M) 6' 3.2"

答案 1 :(得分:0)

我的教授帮我解决了这个问题。我真正需要的是知道如何遍历DataFrame中的值。我的解决方案如下:

df = pd.read_csv('data_file.csv')

tallmen = df[df['gender'] == 'M'].nlargest(2, 'height')    

for i, val in tallmen.iterrows():
    feet = val['height']//12
    inches = val['height']%12

    print("%s (%s) %i'%i"" % (val['name'], val['gender'],
                                     feet, inches))