【发布时间】:2018-12-09 02:40:40
【问题描述】:
原始数据集如下所示:
df.head()
id name level zone_id time
0 Light Rain 1 79 2018-01-01 08:00-10:00
1 Medium Rain 2 1 2018-01-02 09:00-14:00
2 Light Rain 1 79 2018-01-02 09:00-11:00
3 Medium Rain 2 1006 2018-01-01 08:00-09:00
4 Medium Rain 2 1 2018-01-03 10:00-13:00
5 Light Rain 1 1006 2018-01-03 22:00-0:00
6 Light Rain 1 1 2018-01-03 18:00-21:00
我想将每个 zone_id 分离到不同的数据框,然后清理它们。
我从另一个表中获取区域列表并获取:
zone_list
['1006',
'79',
'1']
然后我使用for循环来获取多个数据帧
for i in zone_list:
globals()['df_'+i] = df[df.zone_id == i]
然后我需要使用这样的函数来清理这些数据:
def clean_data(data):
...
return data
我想要做的是将所有数据帧df_1,df_79等放入这个函数并输出多个数据帧。
到目前为止,如果我这样做 clean_data(df_1) 它可以完美运行。但我不知道如何为所有这些数据框创建一个循环。
我想要的是
df_79.head()
id name level zone_id time
0 Light Rain 1 79 2018-01-01 08:00
2 Light Rain 1 79 2018-01-02 09:00
df_1.head()
id name level zone_id time
1 Medium Rain 2 1 2018-01-02 09:00
4 Medium Rain 2 1 2018-01-03 10:00
6 Light Rain 1 1 2018-01-03 18:00
等等
我试图使用 dict 但仍然不知道。
谢谢大家!
【问题讨论】:
-
您是否考虑过使用列表而不是以这种糟糕的方式设置全局变量?
-
或者,直接在 pandas 中的普通
groupby? -
list = [df_1,df_79] for x in list: x = clean_data(x)但是这样不会改变x值吗?如果我检查 df_79,它仍然显示原件。 @MadPhysicist
标签: python list pandas function dictionary