pandas - Pandas df.shift(axis=1) 添加了额外的条目,为什么?
问题描述
这是原始表格的示例。
# z speed dir U_geo V_geo U U[QCC] U[ign] U[siC] U[siD] V
0 40 2.83 181.0 0.05 2.83 -0.20 11 -0.20 2.24 0.95 2.83 11
1 50 2.41 184.8 0.20 2.40 -0.01 11 -0.01 2.47 0.94 2.41 11
2 60 1.92 192.4 0.41 1.88 0.25 11 0.25 2.46 0.94 1.91 11
3 70 1.75 201.7 0.65 1.63 0.50 11 0.50 2.47 0.94 1.68 11
我需要将整个表格移动 1 列来生成:
z speed dir U_geo V_geo U U[QCC] U[ign] U[siC] U[siD] V
0 40 2.83 181.0 0.05 2.83 -0.20 11 -0.20 2.24 0.95 2.83
1 50 2.41 184.8 0.20 2.40 -0.01 11 -0.01 2.47 0.94 2.41
2 60 1.92 192.4 0.41 1.88 0.25 11 0.25 2.46 0.94 1.91
3 70 1.75 201.7 0.65 1.63 0.50 11 0.50 2.47 0.94 1.68
这是提取数据并尝试将其移动一列的代码
wind_rass_table_df=pd.read_csv(file_path, header=j+3, engine='python', nrows=77,sep=r'\s{2,}',skip_blank_lines=False,index_col=False)
wind_rass_table_df=wind_rass_table_df.shift(periods=1,axis=1)
据说 df.shift(axis=1) 应该将数据帧移动 1 列,但它的作用不止于此,它会这样做:
# z speed dir U_geo V_geo U U[QCC] U[ign] U[siC]
0 NaN NaN 2.83 181.0 0.05 2.83 40.0 -0.20 -0.20 2.24
1 NaN NaN 2.41 184.8 0.20 2.40 50.0 -0.01 -0.01 2.47
2 NaN NaN 1.92 192.4 0.41 1.88 60.0 0.25 0.25 2.46
3 NaN NaN 1.75 201.7 0.65 1.63 70.0 0.50 0.50 2.47
移位函数取第一列,插入第 7 列,将第 7 列移到第 8 列,然后重复第 8 列,将第 9 列移过来,依此类推。
将数据框移动一列的正确方法是什么?
非常感谢!
解决方案
您可以使用 iloc 并创建另一个数据框:
df = pd.DataFrame(data=df.iloc[:, :-1], columns=df.columns[1:], index=df.index)
推荐阅读
- mysql - 在mysql中存储一个可以重新排序的列表
- jmeter - Jmeter中自定义文件类型的Mime类型
- reactjs - AG Grid:cellRenderer 禁用值格式化程序
- jquery - jQuery图标不会出现在html中
- partitioning - 使用 col=null 分区的 SAP HANA 分区
- ios - 通知中心不工作。观察者未被调用
- javascript - 在通过闭包时将大模块分解成较小的模块
- perl - 在 perl 中使用常量的最佳实践
- css - CSS FLEX - 使 div 高度适合内容
- vhdl - 如何在常量的case语句中设置分支?错误:选择必须是本地静态表达式