我发现自己不得不创建数据帧,这些数据帧经常是更大数据帧的过滤器,我想知道是否有一种方法可以让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循环来为我做这个吗?
答案 0 :(得分:4)
我认为你需要创建dictionary of DataFrame
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'>