您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-将数据框拆分为多个数据框

Python-将数据框拆分为多个数据框

首先,你的方法效率低下,因为在没有足够的空间容纳新条目的情况下,由于必须定期增长列表,因此逐行追加到列表的速度很慢,因此列表大小在此方面会更好,因为前面并分配一次。

但是,我认为从根本上讲,你的方法有点浪费,因为你已经有了一个数据框,为什么要为这些用户中的每一个创建一个新的?

我将按列对数据帧进行排序'name',将索引设置为此,如果需要,则不要删除该列。

然后生成所有唯一条目的列表,然后你可以使用这些条目执行查找,并且至关重要的是,如果仅查询数据,请使用选择条件返回数据框上的视图,而不会产生昂贵的数据副本。

所以:

# sort the dataframe
df.sort(columns=['name'], inplace=True)
# set the index to be this and don't drop
df.set_index(keys=['name'], drop=False,inplace=True)
# get a list of names
names=df['name'].unique().tolist()
# Now we can perform a lookup on a 'view' of the dataframe
joe = df.loc[df.name=='joe']
# Now you can query all 'joes'

编辑 sort现在已弃用,你需要立即使用sort_values

# sort the dataframe
df.sort_values(by='name', axis=1, inplace=True)
# set the index to be this and don't drop
df.set_index(keys=['name'], drop=False,inplace=True)
# get a list of names
names=df['name'].unique().tolist()
# Now we can perform a lookup on a 'view' of the dataframe
joe = df.loc[df.name=='joe']
# Now you can query all 'joes'

为什么不只通过切片数据帧来做到这一点。就像是

#create some data with Names column
data = pd.DataFrame({'Names': ['Joe', 'John', 'Jasper', 'Jez'] *4, 'Ob1' : np.random.rand(16), 'Ob2' : np.random.rand(16)})

#create unique list of names
UniqueNames = data.Names.unique()

#create a data frame dictionary to store your data frames
DataFrameDict = {elem : pd.DataFrame for elem in UniqueNames}

for key in DataFrameDict.keys():
    DataFrameDict[key] = data[:][data.Names == key]

嘿,请记住,你有一个数据帧字典,就像(我想)你想要它们一样。需要访问一个吗?只需输入

DataFrameDict['Joe']

希望能有所帮助

python 2022/1/1 18:24:57 有515人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶