python - 如何在 Python Pandas 数据框中的每行下添加 24 行
问题描述
原始数据框:
a1 a2 a3 a4 a5 a6
b1 b2 b3 b4 b5 b6
新数据框:
a1 a2 a3 a4 a5 a6
(第 1 个空行)
(第 2 个空行)
...
(第 24 个空行)
b1 b2 b3 b4 b5 b6
(第一个空行)
(第 2 个空行)
...
(第 24 个空行)
问题是:如何进行上述转换?非常感谢。
解决方案
利用:
print (df)
0 1 2 3 4 5
0 a1 a2 a3 a4 a5 a6
1 b1 b2 b3 b4 b5 b6
按重复值的数量首先使用多个索引值,然后使用DataFrame.reindex
with np.arange
:
N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
0 1 2 3 4 5
0 a1 a2 a3 a4 a5 a6
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN
6 b1 b2 b3 b4 b5 b6
7 NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN
编辑:
print (df)
0 1 2 3 4 5
0 a1 2 a3 a4 a5 6
1 b1 2 b3 b4 b5 6
N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
0 1 2 3 4 5
0 a1 2.0 a3 a4 a5 6.0
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN
6 b1 2.0 b3 b4 b5 6.0
7 NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN
def convert_int_with_NaNs(x):
try:
return x.astype('Int64')
except Exception:
return x
df = df.apply(convert_int_with_NaNs)
print (df)
0 1 2 3 4 5
0 a1 2 a3 a4 a5 6
1 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN
6 b1 2 b3 b4 b5 6
7 NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN
推荐阅读
- javascript - Nuxt + Github 页面资产
- c# - C# 重命名注册表值错误“返回 null”
- c++ - 为什么 I/O 相关设置会导致分段错误?
- c++ - Arduino Uno 在计算时出错
- javascript - 在 ES6 中委托类方法时出错
- sequelize.js - 在 Sequelize 中使用具有 create 方法的范围
- python-3.x - Python strptime 无法理解时区偏移
- zsh - 为什么我收到 zsh: exec 格式错误?
- sql - SQL 培训练习协助
- ios - 如何在 iOS 上使用 Firebase 以编程方式获取 Crashlytics 版本