2024-09-28 19:06:59 发布
网友
我想在PandasDataFrame中移动一个列,但是在没有重写整个DF的情况下,我还无法从文档中找到方法来执行此操作。有人知道怎么做吗? 数据帧:
DataFrame
## x1 x2 ##0 206 214 ##1 226 234 ##2 245 253 ##3 265 272 ##4 283 291
期望输出:
## x1 x2 ##0 206 nan ##1 226 214 ##2 245 234 ##3 265 253 ##4 283 272 ##5 nan 291
如果不想丢失在数据帧末尾移位的列,只需先附加所需的数字:
offset = 5 DF = DF.append([np.nan for x in range(offset)]) DF = DF.shift(periods=offset) DF = DF.reset_index() #Only works if sequential index
In [18]: a Out[18]: x1 x2 0 0 5 1 1 6 2 2 7 3 3 8 4 4 9 In [19]: a.x2 = a.x2.shift(1) In [20]: a Out[20]: x1 x2 0 0 NaN 1 1 5 2 2 6 3 3 7 4 4 8
您需要在这里使用df.shift。df.shift(i)将整个数据帧向下移动i个单位。
df.shift
df.shift(i)
i
因此,对于i = 1:
i = 1
输入:
x1 x2 0 206 214 1 226 234 2 245 253 3 265 272 4 283 291
输出:
x1 x2 0 Nan Nan 1 206 214 2 226 234 3 245 253 4 265 272
因此,运行此脚本以获得预期的输出:
import pandas as pd df = pd.DataFrame({'x1': ['206', '226', '245',' 265', '283'], 'x2': ['214', '234', '253', '272', '291']}) print(df) df['x2'] = df['x2'].shift(1) print(df)
如果不想丢失在数据帧末尾移位的列,只需先附加所需的数字:
您需要在这里使用
df.shift
。df.shift(i)
将整个数据帧向下移动i
个单位。因此,对于
i = 1
:输入:
输出:
因此,运行此脚本以获得预期的输出:
相关问题 更多 >
编程相关推荐