具有以下数据表:
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
了设置为某个位置,这里总是第一,但必要的改变顺序range
由reversed
:
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] 删除。
我来说两句