首页 > 解决方案 > 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 列移过来,依此类推。

将数据框移动一列的正确方法是什么?

非常感谢!

标签: pandasdataframeshift

解决方案


您可以使用 iloc 并创建另一个数据框:

df = pd.DataFrame(data=df.iloc[:, :-1], columns=df.columns[1:], index=df.index)

推荐阅读