python - 在python中按顺序的N行分隔列
问题描述
我有一个包含两列的数据框,我需要将这两列(A 列和 B 列)分开 N 个连续行(例如 100 行)。所以输出将是 A 列和 B 列中的 100 行,C 列和 D 列中的另外 100 行,......是否有特定的函数可以处理这个目的?
解决方案
输入数据:
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]
推荐阅读
- websocket - 如何通过 pkg 在一个 exe 文件中构建静态服务器和 websocket 服务器
- jquery - Bootstrap 和 jQuery 的 MD($(...)DataTable 不是函数)
- python - 在 BeautifulSoup 4.7.0+ 中,如何在其属性之一中选择所有不包含指定文本的元素
- c# - IAsyncActionFilter 中 ParameterDescriptor 上的 GetCustomAttributes 缺失
- r - 如何在R中使用调查权重创建单向频率表
- javascript - 使用 async 和 axios 制作天气应用
- typescript - 将 NPM 包类型与在脚本标签中导入的全局模块一起使用
- ionic3 - 如何通过单击按钮显示来自本地 JSON 文件的数据?
- r - 从 r 中的每个组中减去组特定值?
- css - 使用 svg 图标作为背景的最优雅的方式是什么?