Python 从pandas.core.groupby.generic.DataFrameGroupBy对象获取值
嗨,我有这样的数据帧,Python 从pandas.core.groupby.generic.DataFrameGroupBy对象获取值,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,嗨,我有这样的数据帧,time列中有71个唯一值,lat列中有721个唯一值,lon列中有1440个唯一值,temp列中的所有值都是唯一的 数据帧示例: time latitude longitude temp 1950-01-01 90.0 0.00 49654.792969 1950-01-01 90.0 0.25 49654.792969 . .
time
列中有71个唯一值,lat
列中有721个唯一值,lon
列中有1440个唯一值,temp列中的所有值都是唯一的
数据帧示例:
time latitude longitude temp
1950-01-01 90.0 0.00 49654.792969
1950-01-01 90.0 0.25 49654.792969
. . . .
. . . .
73715040 rows * 4 cloumn
现在我想通过使用lat
和lon
列进行分组,以获得所有网格或对的所有时间段的所有temp值,这些网格或对将有1038240行(721 lat*1440 lon)
,所以我这样做
df=df.groupby(['纬度','经度])
现在,由于它是pandas.core.groupby.generic.DataFrameGroupBy对象,我无法从中访问值。因此,我试图通过
df.apply(pd.dataframe)
将其转换为数据帧,但这需要花费大量时间,而且我的内核正在崩溃。那么有没有其他方法来获取记录,或者我在这里做错了什么。如果可能,请建议其他方法。这应该适合您:
df.groupby(['latitude','longitude'])。聚合(lambda x:','。连接(map(str,x)))
这应该适合您:
df.groupby(['latitude','longitude'])。聚合(lambda x:','。连接(map(str,x)))
对象类型pandas.core.groupby.generic.DataFrameGroupBy
是一个元组列表,其中第一个元素是groupby元素,第二个元素是该组的dataframe
请参见下面的示例:
创建测试数据帧
测试数据帧
分组数据帧
重要的
正如@HenriChab所评论的,使用aggregate
或例如sum
将返回数据帧类型,而不是组类型
>>> new_df = df.groupby(["ColA", "ColB"]).sum()
>>> new_df
ColC
ColA ColB
1 5 3
6 3
2 7 9
3 8 13
9 8
最后,您可以重置索引
>>> new_df.reset_index(inplace=True)
>>> new_df
ColA ColB ColC
0 1 5 3
1 1 6 3
2 2 7 9
3 3 8 13
4 3 9 8
对象类型pandas.core.groupby.generic.DataFrameGroupBy是一个元组列表,其中第一个元素是groupby元素,第二个元素是该组的数据帧 请参见下面的示例: 创建测试数据帧 测试数据帧 分组数据帧 重要的 正如@HenriChab所评论的,使用
aggregate
或例如sum
将返回数据帧类型,而不是组类型
>>> new_df = df.groupby(["ColA", "ColB"]).sum()
>>> new_df
ColC
ColA ColB
1 5 3
6 3
2 7 9
3 8 13
9 8
最后,您可以重置索引
>>> new_df.reset_index(inplace=True)
>>> new_df
ColA ColB ColC
0 1 5 3
1 1 6 3
2 2 7 9
3 3 8 13
4 3 9 8
Pandas
groupby()
指令必须附带aggregate()
指令。您希望输出中的第三列是什么?temps逗号分隔?@HenriChab yes我想要所有带有lat-lon pairPandas的temp值groupby()
指令必须带有aggregate()
指令。您希望输出中的第三列是什么?temps逗号分隔?@HenriChab yess我想要所有的temp值和lat-lon Pairey它工作得很好,但顺序有点混乱,就像我预期的第一个纬度和经度是90.0和0.00,但它是-90.0和0.00。这是最后一个纬度,是否有可能获得与原始数据帧中相同顺序的数据对?嘿,我使用了sort=False,它按预期工作。谢谢你的回答。我接受了。:)嘿,它工作得很好,但顺序有点混乱,就像我预期第一纬度和经度是90.0和0.00,但它会变成-90.0和0.00。这是最后一个纬度,是否有可能获得与原始数据帧中相同顺序的数据对?嘿,我使用了sort=False,它按预期工作。谢谢你的回答。我接受了。:)嘿,非常感谢您提供详细的答案!:)嘿,非常感谢您提供详细的答案!:)
>>> new_df = df.groupby(["ColA", "ColB"]).sum()
>>> new_df
ColC
ColA ColB
1 5 3
6 3
2 7 9
3 8 13
9 8
>>> new_df.reset_index(inplace=True)
>>> new_df
ColA ColB ColC
0 1 5 3
1 1 6 3
2 2 7 9
3 3 8 13
4 3 9 8