這個問題在這里已經有了答案: 如何遍歷 pandas 資料框的列以運行回歸 11 個答案 50 分鐘前關閉。
我是 Python 和 Pandas 的新手,希望有人能幫助我。我有以下資料框:
import pandas as pd
from pandas import Timestamp
pd.DataFrame({'timestamp': {0: Timestamp('2021-06-01 00:00:00'),
1: Timestamp('2021-06-01 01:00:00'),
2: Timestamp('2021-06-01 02:00:00'),
3: Timestamp('2021-06-01 03:00:00'),
4: Timestamp('2021-06-01 04:00:00')},
'column_0': {0: 384.0,
1: 389.0,
2: 352.0,
3: 352.0,
4: 356.0},
'column_1': {0: 386.0,
1: 352.0,
2: 352.0,
3: 356.0,
4: 375.0},
'column_2': {0: 352.0,
1: 352.0,
2: 356.0,
3: 375.0,
4: 365.0},
'column_3': {0: 350.0,
1: 356.0,
2: 375.0,
3: 365.0,
4: 358.0},
'column_4': {0: 359.0,
1: 375.0,
2: 365.0,
3: 358.0,
4: 347.0})
timestamp column_0 column_1 column_2 column_3 column_4
0 2021-06-01 00:00:00 384.0 386.0 352.0 350.0 359.0
1 2021-06-01 01:00:00 389.0 352.0 352.0 356.0 375.0
2 2021-06-01 02:00:00 352.0 352.0 356.0 375.0 365.0
3 2021-06-01 03:00:00 352.0 356.0 375.0 365.0 358.0
4 2021-06-01 04:00:00 356.0 375.0 365.0 358.0 347.0
我想要做的是將column_1中的數字向下移動一行,將 column_2中的數字向下移動兩行,將 column_3中的數字向下移動 3 行,依此類推。
我知道這可以用代碼來完成
df['column_1'].shift( 1)
df['column_2'].shift( 2)
...
手動方法太麻煩,因為實際上總共有 40 多個這樣的列。這就是為什么我想添加一個回圈,這樣代碼就不會太長。最后,資料框應如下所示:
timestamp column_0 column_1 column_2 column_3 column_4
0 2021-06-01 00:00:00 384.0 NaN NaN NaN NaN
1 2021-06-01 01:00:00 389.0 386.0 NaN NaN NaN
2 2021-06-01 02:00:00 352.0 352.0 352.0 NaN NaN
3 2021-06-01 03:00:00 352.0 352.0 352.0 350.0 NaN
4 2021-06-01 04:00:00 356.0 356.0 356.0 356.0 359.0
...
有人知道怎么做嗎?我并不是很擅長編程,到目前為止我的嘗試都失敗了。如果有任何幫助,我將不勝感激。
uj5u.com熱心網友回復:
您可以使用 訪問列名的有序序列df.columns。從那里可以快速迭代它們并在enumerate. 由于您的第一列是您的時間戳,請將列舉起始值設定為 -1 以對齊列移位。
for i, col in enumerate(df.columns, -1):
if i > 0:
df[col] = df[col].shift(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412362.html
標籤:
