python - 根据原始数据框列数创建多个数据框

标签 python pandas dataframe

找了好久都没有找到类似的问题。如果有,请告诉我!

我目前正在尝试将一个数据帧分成 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/

相关文章:

python - 如何防止 Django 中的重复信号

python - 反转给定索引之间的数组

通过 pip 安装后 Python 无法看到模块

python - 添加对的缺失值

python - 如何矢量化我的函数以加快数据帧上的操作?

dataframe - 如何使用Dask Pivot_table?

python - 在图像中发现不完全相同的模板

python - 使用 pandas 的工作日数之间的日期时间差异

python - 将 Pandas DataFrame 中的连续列转换为相应的行

python - 具有不同 X 轴顺序的 Pandas groupby 图