如何在Python和Pandas中使用for循环创建许多经过过滤的数据帧?
我发现自己必须经常创建数据帧,这些数据帧是较大数据帧的过滤器,我想知道是否有一种方法可以为我编写Python来实现这一点 例如,我现在处理的数据集是应用程序版本数据,如下所示:如何在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
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')
谢谢,但输出必须是每个版本的数据帧,而不是字典。它是数据帧字典-正是您需要的。