python - 根据原始数据框列数创建多个数据框
问题描述
我已经搜索了很长时间,但我没有找到任何类似的问题。如果有,请告诉我!
我目前正在尝试将一个数据帧划分为 n 个数据帧,其中 n 等于原始数据帧的列数。所有新生成的数据框必须始终保留原始数据框的第一列。例如,额外的内容将被收集到一个列表中,以供进一步访问。
为了形象化我的意图,这里有一个简短的例子:
>> original df
GeneID A B C D E
1 0.3 0.2 0.6 0.4 0.8
2 0.5 0.3 0.1 0.2 0.6
3 0.4 0.1 0.5 0.1 0.3
4 0.9 0.7 0.1 0.6 0.7
5 0.1 0.4 0.7 0.2 0.5
我想要的输出是这样的:
>> df1
GeneID A
1 0.3
2 0.5
3 0.4
4 0.9
5 0.1
>> df2
GeneID B
1 0.2
2 0.3
3 0.1
4 0.7
5 0.4
....
依此类推,直到原始数据框中的所有列都被覆盖。什么是更好的解决方案?
解决方案
您可以使用df.columns
获取所有列名,然后创建子数据框:
outdflist =[]
# for each column beyond first:
for col in oridf.columns[1:]:
# create a subdf with desired columns:
subdf = oridf[['GeneID',col]]
# append subdf to list of df:
outdflist.append(subdf)
# to view all dataframes created:
for df in outdflist:
print(df)
输出:
GeneID A
0 1 0.3
1 2 0.5
2 3 0.4
3 4 0.9
4 5 0.1
GeneID B
0 1 0.2
1 2 0.3
2 3 0.1
3 4 0.7
4 5 0.4
GeneID C
0 1 0.6
1 2 0.1
2 3 0.5
3 4 0.1
4 5 0.7
GeneID D
0 1 0.4
1 2 0.2
2 3 0.1
3 4 0.6
4 5 0.2
GeneID E
0 1 0.8
1 2 0.6
2 3 0.3
3 4 0.7
4 5 0.5
上面for
的循环也可以更简单地写成列表推导:
outdflist = [ oridf[['GeneID', col]]
for col in oridf.columns[1:] ]
推荐阅读
- c# - HierarchicalDataTemplate 仅绑定具有属性的数据
- jquery - 在jquery中如何将前置列表项添加到从输入字段中检索的ul
- laravel - Laravel 控制器没有从
- rest - 在 JAX-RS 客户端中将映射中的名称-值对作为查询参数传递
- c# - 如何使用 Cefsharp 管理多用户配置文件?
- laravel-5 - Laravel:抛出新的 MethodNotAllowedHttpException($others);
- python - Python中的master-workers实现
- java - 仅将法语口音转换为百分比编码
- java - 我如何将 java java.nio.ByteBuffer 转换为 spring org.springframework.web.multipart.MultipartFile?
- c# - Combobox : 每个 DataTrigger 的 DataTemplate