Pandas DataFrame:如何水平打印单行?

新手上路,请多包涵

DataFrame 的单行并排打印值,即 column_name 然后是 columne_value 在一行中,下一行包含下一个 column_name 和 columne_value。例如,下面的代码

import pandas as pd

df = pd.DataFrame([[100,200,300],[400,500,600]])
for index, row in df.iterrows():
    # other operations goes here....
    print row

第一行的输出为

0    100
1    200
2    300
Name: 0, dtype: int64

有没有办法水平打印每一行并忽略数据类型名称?第一行示例:

 0    1    2
100  200  300

原文由 gmsi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

使用 to_frame 方法然后转置 T

 df = pd.DataFrame([[100,200,300],[400,500,600]])
for index, row in df.iterrows():
    print(row.to_frame().T)

     0    1    2
0  100  200  300
     0    1    2
1  400  500  600


笔记:

这类似于@JohnE 的回答,因为方法 to_frame 是围绕 pd.DataFrame 的语法糖。

事实上,如果我们 按照代码

def to_frame(self, name=None):
    """
    Convert Series to DataFrame
    Parameters
    ----------
    name : object, default None
        The passed name should substitute for the series name (if it has
        one).
    Returns
    -------
    data_frame : DataFrame
    """
    if name is None:
        df = self._constructor_expanddim(self)
    else:
        df = self._constructor_expanddim({name: self})

    return df

指向 _constructor_expanddim

 @property
def _constructor_expanddim(self):
    from pandas.core.frame import DataFrame
    return DataFrame

你可以看到它只返回可调用的 DataFrame

原文由 piRSquared 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用转置属性:

 df.T

     0    1    2
0  100  200  300

原文由 Zeugma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题