在不使用“ .insert” /不手动重新排序的情况下添加列时,如何在数据表中的特定位置插入列?

维塔塔

具有以下数据表:

import datetime as dt
import pandas as pd

some_money = [34,42,300,450,550]
df = pd.DataFrame({'TIME': ['2020-01', '2019-12', '2019-11', '2019-10', '2019-09'], \
                    'MONEY':some_money}) 

for x in range(1,4):
    df[f'period (-{x})'] = df["MONEY"].shift(periods = -x, fill_value = 0)
df

创建此输出:

在此处输入图片说明

创建列时如何将列放在任意位置?

我已经阅读了如何在Pandas中的特定列索引处插入列?并且使用以下代码片段将它们放置在所需的位置:

cols = df.columns.tolist()
print(cols)
cols = ['TIME', 'period (-1)','MONEY', 'period (-2)', 'period (-3)']
df.reindex(columns=cols)

但是,创建cols列表似乎有些手动。有没有办法确定for x in range(1,4)将列放在哪里循环?通过代码以某种方式生成下表,从而生成数据表:

在此处输入图片说明

耶斯列尔

使用DataFrame.insert了设置为某个位置,这里总是第一,但必要的改变顺序rangereversed

for x in reversed(range(1,4)):
    df.insert(1, f'period (-{x})', df["MONEY"].shift(periods = -x, fill_value = 0))

或通过range(4, 1, -1)

for x in range(4, 1, -1):
    df.insert(1, f'period (-{x})', df["MONEY"].shift(periods = -x, fill_value = 0))

print (df)
      TIME  period (-1)  period (-2)  period (-3)  MONEY
0  2020-01           42          300          450     34
1  2019-12          300          450          550     42
2  2019-11          450          550            0    300
3  2019-10          550            0            0    450
4  2019-09            0            0            0    550

如果未更改顺序:

for x in range(1,4):
    df.insert(1, f'period (-{x})', df["MONEY"].shift(periods = -x, fill_value = 0))

print (df)
      TIME  period (-3)  period (-2)  period (-1)  MONEY
0  2020-01          450          300           42     34
1  2019-12          550          450          300     42
2  2019-11            0          550          450    300
3  2019-10            0            0          550    450
4  2019-09            0            0            0    550

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档