分数据框为较小的数据框通过列名

0

的问题

所以我在做一个时间序列/LSTM分配和我有一个股票数据集: https://www.kaggle.com/camnugent/sandp500

事实是,我需要拆分的主要数据框为较小的数据帧的名字的每个公司。 是否有一个快速的方式做到这一点? 因为有数十家公司的名称,我已经看到,这是可以做到完全,但这种努力是太多。

df = pd.read_csv('all_stocks_5yr.csv', parse_dates=['date'])
df['date'] = pd.to_datetime(df['date'])

grouped_df = df.groupby('Name')

这里可以看出,更好:

enter image description here

正如你可以看到,有不同的公司与不同的名字,是什么我想要的是一个据框为每个公司。 帮助我们非常感谢

dataframe keras lstm pandas
2021-11-23 15:16:49
2

最好的答案

1

假设这是你的数据框:

 Name  price
0   aal      1
1   aal      2
2   aal      3
3   aal      4
4   aal      5
5   aal      6
6   bll      7
7   bll      8
8   bll      9
9   bll      8
10  dll      7
11  dll     56
12  dll      4
13  dll      3
14  dll      3
15  dll      5

然后做到以下几点:

for Name, df in df.groupby('Name'):
    df.to_csv("Price_{}".format(Name)+".csv", sep=";")

这将保存所有子数据帧为csv。 查什么代码:

for Name, df in df.groupby('Name'):
    print(df)

返回:

Name  price
0  aal      1
1  aal      2
2  aal      3
3  aal      4
4  aal      5
5  aal      6
  Name  price
6  bll      7
7  bll      8
8  bll      9
9  bll      8
   Name  price
10  dll      7
11  dll     56
12  dll      4
13  dll      3
14  dll      3
15  dll      5

如果你需要重新设定索引的每df,这样做:

for Name, df in df.groupby('Name'):
    gf = df.reset_index()
    print(gf)

它提供了:

index Name  price
0      0  aal      1
1      1  aal      2
2      2  aal      3
3      3  aal      4
4      4  aal      5
5      5  aal      6
   index Name  price
0      6  bll      7
1      7  bll      8
2      8  bll      9
3      9  bll      8
   index Name  price
0     10  dll      7
1     11  dll     56
2     12  dll      4
3     13  dll      3
4     14  dll      3
5     15  dll      5
2021-11-23 17:49:39

该数据集的一些领域,如:公开、高,低,附近。我怎么将它们加当改变df csv?
eneko valero

@enekovalero你不需要做任何事情比以上的代码。 我df只是一个例子。 所有列将在每一个生产数据框. 这只是过滤在的名称。 为你的未来问题(或者如果你想要我来测试在您的实际数据),不后的图像。 而不是做这样的: df.head(50).to_dict() (或者任何数量,而不是50)和粘贴到的结果之间的``<>中``在你这-问题。
Serge de Gosson de Varennes

@eneko valero...我不认为你的概念很有意义,或任何意义上的任何责任。 你可以尝试概念引用下面? 可能只是第1/4的适用于你在做什么。 github.com/ASH-WICUS/Notebooks/blob/master/...
ASH
0

这应该是可行的,与布尔索引:

list_of_dataframes = [
    df[df.Name == name]
    for name
    in df.Name.unique()
]
2021-11-23 16:22:54

这会的工作,但我想,这将是相当缓慢的,在一个大数据集,因为你已经计算了整个系列布尔的每个独特的名称。
Kevin Roche

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................