找了好久都没有找到类似的问题。如果有,请告诉我!
我目前正在尝试将一个数据帧分成 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:] ]
关于python - 根据原始数据框列数创建多个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031829/