将多个dataframe.info存储到数组中

时间:2017-07-26 22:06:14

标签: python pandas dataframe

我想将来自几个数据帧的dataframe.info中的信息组合到一个要导出的表中。

我认为最好的方法是将df1.info拉入一个数组然后进行一些切割,这样只剩下列和计数信息。

以下是我想在代码中做的事情:

import pandas as pd
files=["file1", "file2"]
for filename in files:
    df= pd.read_csv(filename)
    info=df.info()
    *convert info to info[]*
    *cut first 3 rows and last 2 rows*
    output=output.extend(info) 

如果有什么不清楚,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

由于df.info()打印到stdout,您可以通过暂时将IO重定向到StringIO对象来收集它:

import contextlib
import io

def get_info_middle(df):
    fobj = io.StringIO()
    with contextlib.redirect_stdout(fobj) as stdout:
        df.info()
    fobj.seek(0)
    return '\n'.join(fobj.read().splitlines()[3:-2])

实施例

In [1]: df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})

In [2]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
a    3 non-null int64
b    3 non-null int64
dtypes: int64(2)
memory usage: 128.0 bytes

In [3]: print(get_info_middle(df))
a    3 non-null int64
b    3 non-null int64