Python 函数,该函数从另一个数据帧中获取列并在新数据帧中返回

Python 函数,该函数从另一个数据帧中获取列并在新数据帧中返回,python,python-3.x,pandas,numpy,dataframe,Python,Python 3.x,Pandas,Numpy,Dataframe,我很新,所以请原谅这个问题,如果它是非常基本的,但我有一个数据框与一些列(高开低关)。我想编写一个简单的函数,它只接受Close列(作为默认值,但允许指定任何其他列),并只返回一个包含该列的新数据帧 下面的代码只返回一个带有列名但没有数据的数据帧 import pandas as pd df = pd.read_csv('Book2.csv') df = df.loc[2:, :'Close'].drop('Unnamed: 7', axis=1) df.rename(columns={'Un

我很新,所以请原谅这个问题,如果它是非常基本的,但我有一个数据框与一些列(高开低关)。我想编写一个简单的函数,它只接受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)

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

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

如果不使用copy(),则在对结果进行更改时,初始df也会更改,因此,由于您需要一个新的数据帧(或一个系列,因为它是一维的),这可能就是您想要的。

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