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

gms*_*msi 12 python dataframe pandas

DataFrame的单行并排打印值,即column_name然后columne_value在一行中,下一行包含next 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
Run Code Online (Sandbox Code Playgroud)

第一行的输出为

0    100
1    200
2    300
Name: 0, dtype: int64    
Run Code Online (Sandbox Code Playgroud)

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

0    1    2
100  200  300
Run Code Online (Sandbox Code Playgroud)

piR*_*red 10

使用该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
Run Code Online (Sandbox Code Playgroud)

注意:
这与@ 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
Run Code Online (Sandbox Code Playgroud)

指着 _constructor_expanddim

@property
def _constructor_expanddim(self):
    from pandas.core.frame import DataFrame
    return DataFrame
Run Code Online (Sandbox Code Playgroud)

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


Bou*_*oud 6

使用转置属性:

df.T

     0    1    2
0  100  200  300
Run Code Online (Sandbox Code Playgroud)