【问题标题】:Function that takes columns from another dataframes and returns the, in a new dataframe从另一个数据框中获取列并在新数据框中返回的函数
【发布时间】:2018-07-16 18:41:59
【问题描述】:

我很新,所以如果这个问题非常基本,请原谅这个问题,但我有一个包含一些列的数据框(开高低和收盘)。我想编写一个简单的函数,它只采用 Close 列(作为默认值,但允许指定任何其他列)并只返回一个包含该列的新数据框。

我下面的代码只返回一个带有列名但没有数据的数据框

import pandas as pd

df = pd.read_csv('Book2.csv')
df = df.loc[2:, :'Close'].drop('Unnamed: 7', axis=1)
df.rename(columns={'Unnamed: 0': 'X'}, inplace=True)
df.drop(['O', 'H', 'L'], axis=1, inplace=True)


def agg_data(ys):
    agg_df = pd.DataFrame(ys, columns=['Y Values'])
    return agg_df


result = agg_data(df['Close'])
print(result)

【问题讨论】:

  • 你可以做result = df[['Close']]。双方括号会为你做的。
  • 我尝试侵入您的系统以访问 Book2.csv 并运行您的代码,但我不能,因为我不是黑客。不幸的是,除此之外,我没有其他方法可以重现您的问题。
  • 我更好奇为什么我的语法会产生一个空的数据框。Book2.cvs 只是一堆数据。从该代码产生的最终 df 只是带有列标题(开盘、高盘、低盘、收盘)的数据行

标签: python python-3.x pandas numpy dataframe


【解决方案1】:

当您的数据已经是 pandas 数据框时,您不需要将数据放入 pd.DataFrame() 中。如果我误解了您想要的内容,请纠正我,但在我看来这应该足够了:

result = df['close'].copy()

如果您不使用 copy(),那么如果您对 result 进行更改,您的初始 df 也会发生变化,所以既然您想要一个新的数据框 (或者一个系列,因为它是一维的)这可能就是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多