如何在Python和Pandas中使用for循环创建许多经过过滤的数据帧?

如何在Python和Pandas中使用for循环创建许多经过过滤的数据帧?,python,pandas,Python,Pandas,我发现自己必须经常创建数据帧,这些数据帧是较大数据帧的过滤器,我想知道是否有一种方法可以为我编写Python来实现这一点 例如,我现在处理的数据集是应用程序版本数据,如下所示: user_id | session_id | timestamp | time_seconds | app_version 001 | 123 | 2014-01-01| 251 | v1 002 | 845 | 2014-01-01| 514

我发现自己必须经常创建数据帧,这些数据帧是较大数据帧的过滤器,我想知道是否有一种方法可以为我编写Python来实现这一点

例如,我现在处理的数据集是应用程序版本数据,如下所示:

user_id | session_id | timestamp | time_seconds | app_version
 001    |   123      | 2014-01-01|    251       |     v1
 002    |   845      | 2014-01-01|    514       |     v1
 003    |   741      | 2014-01-02|    141       |     v1
 003    |   477      | 2014-01-03|    221       |     v2
 004    |   121      | 2014-01-03|    120       |     v2
 005    |   921      | 2014-01-04|    60        |     v3
...
我需要区分不同的应用程序版本,以便每个版本都有自己的数据帧,目前我是这样做的:

v1 = all_data[all_data['app_version'] == 'v1']
v2 = all_data[all_data['app_version'] == 'v2']
v3 = all_data[all_data['app_version'] == 'v3']

这看起来很重复,我可以写一个for循环来帮我完成吗?

我想你需要创建
数据帧字典
s:

d = dict(tuple(df.groupby('app_version')))
print (d)
{'v2':    user_id  session_id   timestamp  time_seconds app_version
3        3         477  2014-01-03           221          v2
4        4         121  2014-01-03           120          v2, 
'v3':    user_id  session_id   timestamp  time_seconds app_version
5        5         921  2014-01-04            60          v3, 
'v1':    user_id  session_id   timestamp  time_seconds app_version
0        1         123  2014-01-01           251          v1
1        2         845  2014-01-01           514          v1
2        3         741  2014-01-02           141          v1}

print (d['v1'])
   user_id  session_id   timestamp  time_seconds app_version
0        1         123  2014-01-01           251          v1
1        2         845  2014-01-01           514          v1
2        3         741  2014-01-02           141          v1

print (type(d['v1']))
<class 'pandas.core.frame.DataFrame'>
d=dict(元组(df.groupby('app\u version'))
印刷品(d)
{'v2':用户\u id会话\u id时间戳时间\u秒应用程序\u版本
3477 2014-01-03 221 v2
4 4 121 2014-01-03 120 v2,
“v3”:用户\u id会话\u id时间戳时间\u秒应用程序\u版本
5 5 921 2014-01-04 60 v3,
“v1”:用户\u id会话\u id时间戳时间\u秒应用程序\u版本
01 123 2014-01-01 251 v1
12845 2014-01-01 514 v1
23741 2014-01-02 141 v1}
打印(d['v1'])
用户id会话id时间戳时间秒应用程序版本
01 123 2014-01-01 251 v1
12845 2014-01-01 514 v1
23741 2014-01-02141 v1
打印(类型(d['v1']))

根据您实际需要,您可以使用
df.groupby('app_version')
谢谢,但输出必须是每个版本的数据帧,而不是字典。它是数据帧字典-正是您需要的。