簡體   English   中英

如何根據另一列中的值向左移動 pandas df 中的列?

[英]How to shift columns in pandas df left based on value in another column?

我有一個 pandas df,如第一張圖片所示,並且:

  • 我需要根據“Shift”列中的值在每行左移“Col_1”和“Col_10”之間的列。 最終結果應該類似於第二張圖片中顯示的內容。
  • 另外,如果有辦法用每行前三個數字中的最大值(在本例中始終為 10)填充現在的空單元格,我該怎么做?

在此處輸入圖像描述

在此處輸入圖像描述

在每一行上使用shift

df.iloc[:, 1:] = df.apply(lambda x: x.iloc[1:].shift(-x.loc['Shift']),
                          axis=1, result_type='expand')
print(df)

# Output
   Shift  Col_1  Col_2  Col_3  Col_4  Col_5  Col_6  Col_7  Col_8  Col_9  Col_10
0      5    6.0    7.0    8.0    9.0   10.0    NaN    NaN    NaN    NaN     NaN
1      3    4.0    5.0    6.0    7.0    8.0    9.0   10.0    NaN    NaN     NaN
2      2    3.0    4.0    5.0    6.0    7.0    8.0    9.0   10.0    NaN     NaN
3      4    5.0    6.0    7.0    8.0    9.0   10.0    NaN    NaN    NaN     NaN
4      1    2.0    3.0    4.0    5.0    6.0    7.0    8.0    9.0   10.0     NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM