sig*_*fel 5 python pandas pandas-groupby
假设我有一个 Pandas DataFrame数据,我想根据特定列col将其拆分
def split_by_column(data, column):
chunk_list = [(k,g) for k, g in data.groupby(column)]
return dict(chunk_list)
collection = split_by_column(data, 'col')
Run Code Online (Sandbox Code Playgroud)
这样我以后就可以轻松地访问和应用函数到这个集合。
例如,如果我有一个同时具有数据和集合作为实例变量的对象,我是否在内存中有两个单独的数据副本,或者字典是否包含对数据中适当夹头的引用?
小智 1
我试过这个:
data=pd.DataFrame({'a':[1,2,3,4], 'b':[6,9,8,9]})
print('data initial:',data)
def split_by_column(data, column):
chunk_list = [(k,g) for k, g in data.groupby(column)]
return dict(chunk_list)
collection = split_by_column(data, 'b')
print('collection initial:',collection)
Run Code Online (Sandbox Code Playgroud)
输出是:
data initial: a b
0 1 6
1 2 9
2 3 8
3 4 9
collection initial: {6: a b
0 1 6, 8: a b
2 3 8, 9: a b
1 2 9
3 4 9}
Run Code Online (Sandbox Code Playgroud)
如果我现在更改数据
data.at[3,'a']=5
Run Code Online (Sandbox Code Playgroud)
再次打印数据和集合,输出是这样的:
data new: a b
0 1 6
1 2 9
2 3 8
3 5 9
collection new: {6: a b
0 1 6, 8: a b
2 3 8, 9: a b
1 2 9
3 4 9}
Run Code Online (Sandbox Code Playgroud)
由于我也刚刚开始探索 pandas,我无法告诉您底层机制是什么,但由于值 5 仅出现在数据框中,而不出现在字典中,我得出的结论是,您有两个不同的副本您的数据。
我希望,这对您有帮助。最好的,勒帕克
归档时间: |
|
查看次数: |
368 次 |
最近记录: |