【问题标题】:Put maximum of each column from a list of dataframe into new dataframe将数据框列表中每列的最大值放入新数据框
【发布时间】:2015-06-15 10:42:01
【问题描述】:

我最近开始使用 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)

【问题讨论】:

  • 列表中的所有数据框是否都具有相同的列?
  • 你能举个小例子,说明你有什么数据,你到底想要什么?
  • 你的代码有结果吗?出错了?
  • @James,是的,列表中的所有数据框都有相同的列和不同的数据。

标签: python pandas dataframe


【解决方案1】:

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

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 条目。

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 2021-09-23
    • 2017-07-31
    • 2022-11-30
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多