python - 根据先前的值在数据框中创建下一行
问题描述
我的 df 如下所示
id number
123 1
256 2
879 3
132 4
3215 5
216 6
输出应该是这样的:
id number
123 1
256 2
879 3
132 4
3215 5
216 6
NaN 7
NaN 8
NaN 9
NaN 10
所以基本上我需要将 1 添加到列号的前一行中,并且在列 id 中不应该有任何值。我需要 30 个新行。我试过这个:
n = 30
for i in range(n):
df = df.append(df.tail(1).add(1))
但结果不正确。你有什么想法?感谢帮助。问候托马斯
解决方案
您可以set_index
和reindex
:reset_index
df.set_index('number').reindex(range(1, 11)).reset_index()
输出:
number id
0 1 123.0
1 2 256.0
2 3 879.0
3 4 132.0
4 5 3215.0
5 6 216.0
6 7 NaN
7 8 NaN
8 9 NaN
9 10 NaN
如果要保持列顺序:
cols = df.columns
df.set_index('number').reindex(range(1, 11)).reset_index()[cols]
id number
0 123.0 1
1 256.0 2
2 879.0 3
3 132.0 4
4 3215.0 5
5 216.0 6
6 NaN 7
7 NaN 8
8 NaN 9
9 NaN 10
推荐阅读
- android - Android,如果用户删除 SD 卡上的 SAF 树 uri(文件夹)。无法创建相同的文件夹
- azure-devops - 当“更改已经存在”时如何修复 YAML 文件转换任务?
- apache-spark-sql - 在 PowerQuery 中更新源:通过 ODBC 提取 Azure 数据
- r - 从 KableExtra 表对象以 R 笔记本格式正确呈现数学符号
- flutter - 如何确定一个偏移量是否包含在另一个偏移量区域中?
- c# - 在 SQL Server 中获取一组值
- google-chrome - 如何将“允许下载”添加到沙盒属性列表
- c++ - 无论如何将 WebView 或任何其他相同的对象包含到 c++ 项目中?
- android - 为 android x86 和 x86_64 架构编译 ijkplayer x264,错误:未知类型名称“v4si”
- c++ - 不可访问的虚函数的模糊访问