将每列的最大值从数据帧列表放入新数据帧

时间:2015-06-15 10:42:01

标签: python pandas dataframe

我最近开始使用pandas数据帧。

我有一个名为'arr'的数据框列表。

编辑:'arr'中的所有数据帧都具有相同的列但数据不同。 另外,我有一个空数据帧'ndf',我需要使用上面的列表填写。 如何遍历'arr'以将'arr'中列的最大值填入'ndf'中的一行 所以,我们会有

  

ndf 中的行数= arr 中的元素数

我正在寻找类似的东西:

columns=['time','Open','High','Low','Close']
ndf=DataFrame(columns=columns)
ndf['High']=arr[i].max(axis=0)

1 个答案:

答案 0 :(得分:0)

根据您的描述,我假设您的数据的基本示例如下所示:

import pandas as pd

data =[{'time':'2013-09-01','open':249,'high':254,'low':249,'close':250},
       {'time':'2013-09-02','open':249,'high':256,'low':248,'close':250}]
data2 =[{'time':'2013-09-01','open':251,'high':253,'low':248,'close':250},
        {'time':'2013-09-02','open':245,'high':251,'low':243,'close':247}]
df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
arr = [df, df2]

如果是这种情况,那么您可以简单地遍历数据框列表(通过enumerate())和每个数据框的列(通过iteritems(),查看http://pandas.pydata.org/pandas-docs/stable/basics.html#iteritems),填充每个数据框通过字典理解的新行:(见Create a dictionary with list comprehension in Python):

ndf = pd.DataFrame(columns = df.columns)
for i, df in enumerate(arr):
    ndf = ndf.append(pd.DataFrame(data = {colName: max(colData) for colName, colData in df.iteritems()}, index = [i]))

如果您的某些数据框中包含任何其他列,则生成的数据框ndf将在相关位置显示NaN个条目。