首页 > 解决方案 > 在python中按顺序的N行分隔列

问题描述

我有一个包含两列的数据框,我需要将这两列(A 列和 B 列)分开 N 个连续行(例如 100 行)。所以输出将是 A 列和 B 列中的 100 行,C 列和 D 列中的另外 100 行,......是否有特定的函数可以处理这个目的?

标签: pythonpandasdataframe

解决方案


输入数据:

df = pd.DataFrame(np.arange(1, 2001).reshape((-1, 2)), columns=["A", "B"])
print(df)

        A     B
0       1     2
1       3     4
2       5     6
3       7     8
4       9    10
..    ...   ...
995  1991  1992
996  1993  1994
997  1995  1996
998  1997  1998
999  1999  2000

[1000 rows x 2 columns]

利用np.array_split

out = np.concatenate(np.array_split(df, range(100, len(df), 100)), axis=1)
print(out)

array([[   1,    2,  201, ..., 1602, 1801, 1802],
       [   3,    4,  203, ..., 1604, 1803, 1804],
       [   5,    6,  205, ..., 1606, 1805, 1806],
       ...,
       [ 195,  196,  395, ..., 1796, 1995, 1996],
       [ 197,  198,  397, ..., 1798, 1997, 1998],
       [ 199,  200,  399, ..., 1800, 1999, 2000]])

构建您的数据框:

df1 = pd.DataFrame(out, columns=list(map(chr, range(65, out.shape[1]+65))))
print(df1)

      A    B    C    D    E    F  ...     O     P     Q     R     S     T
0     1    2  201  202  401  402  ...  1401  1402  1601  1602  1801  1802
1     3    4  203  204  403  404  ...  1403  1404  1603  1604  1803  1804
2     5    6  205  206  405  406  ...  1405  1406  1605  1606  1805  1806
3     7    8  207  208  407  408  ...  1407  1408  1607  1608  1807  1808
4     9   10  209  210  409  410  ...  1409  1410  1609  1610  1809  1810
..  ...  ...  ...  ...  ...  ...  ...   ...   ...   ...   ...   ...   ...
95  191  192  391  392  591  592  ...  1591  1592  1791  1792  1991  1992
96  193  194  393  394  593  594  ...  1593  1594  1793  1794  1993  1994
97  195  196  395  396  595  596  ...  1595  1596  1795  1796  1995  1996
98  197  198  397  398  597  598  ...  1597  1598  1797  1798  1997  1998
99  199  200  399  400  599  600  ...  1599  1600  1799  1800  1999  2000

[100 rows x 20 columns]

推荐阅读