Python 从现有数据帧的行子集创建新数据帧
我是一个有巨蟒和熊猫的新手。我有一个熊猫数据框架,由许多股票的多年时间序列数据组成,例如标准普尔500指数。我想逐一遍历每个独特的股票代码,并计算收盘价的技术指标。我一直在尝试从主数据框及其所有价格历史为每个独特的股票创建一个新的数据框,然后将其传递给一个方法,该方法将进行技术分析,而不是传递主数据框。以下是我的数据框中的一些示例数据:Python 从现有数据帧的行子集创建新数据帧,python,pandas,Python,Pandas,我是一个有巨蟒和熊猫的新手。我有一个熊猫数据框架,由许多股票的多年时间序列数据组成,例如标准普尔500指数。我想逐一遍历每个独特的股票代码,并计算收盘价的技术指标。我一直在尝试从主数据框及其所有价格历史为每个独特的股票创建一个新的数据框,然后将其传递给一个方法,该方法将进行技术分析,而不是传递主数据框。以下是我的数据框中的一些示例数据: Id Symbol Date Open High Low Close Volume 1
Id Symbol Date Open High Low Close Volume
1 A99 2012-01-02 730.019 730.019 730.019 730.019 0
2 ABA 2012-01-02 4.200 4.200 4.200 4.200 0
3 AFI 2012-01-02 5.360 5.360 5.360 5.360 0
4 AIA 2012-01-02 2.520 2.520 2.520 2.520 0
...
501 A99 2012-01-03 730.019 730.019 730.019 730.019 0
...
我尝试过像loc、iloc和groupby这样的索引器,但没有成功。我读过很多文章。
但是没有一个完全符合我的要求。所有这些的主要问题是你必须有一个文字搜索条件,而我需要一个变量过滤器名称,即股票名称。我的数据表示例如下:
这是我当前代码的一个片段,不起作用:
#从数据库中获取数据
df=股票价格。获取_数据()
任何提示都将不胜感激。您的代码没有错<代码>分组依据不适用于此处,因为没有分组操作。请检查您的方法
股票价格。计算技术
df=pd.DataFrame({'symbol':['a','a','a','b','b'],'v':[1,2,3,4,5]})
ts=pd.Series(df.symbol.unique())
for i in ts:
filtered_df=df.loc[df.symbol==i]
print(filtered_df)
symbol v
0 a 1
1 a 2
2 a 3
symbol v
3 b 4
4 b 5
选择与符号“A99”匹配的所有行
filtered_df = df.loc[df['Symbol'] == 'A99']
还可以尝试:
filtered_df = df.loc[df['Symbol'].isin('A99')]
我不明白这个问题…@哈米什:可能就是你要找的。。??
filtered_df = df.loc[df['Symbol'].isin('A99')]