交换某些行中的列

时间:2020-05-22 10:23:59

标签: python pandas dataframe

我有这样的DataFrame:

     A            B      C
"010-1"       "Car"     500
"010-2"     "Train"     302
"Result"      "010"      23
"011-1"      "Ship"     321
"011-2"     "Plane"     321
"011-3"      "Bike"     321
"Result"      "011"     321

现在可以使用Pandas将AB的列移动到"Result"列中的A值了吗?

所以最终结果是:

     A            B       C
"010-1"       "Car"     500
"010-2"     "Train"     302
  "010"     "Result"     23
"011-1"      "Ship"     321
"011-2"     "Plane"     321
"011-3"      "Bike"     321
  "011"    "Result"     321

编辑:实际上,除了A和B之外,列可能多于一列。

3 个答案:

答案 0 :(得分:2)

您可以使用numpy函数entity_id

原始数据框:

where()

命令:
(使用通用的Python模式In[6]: df Out[6]: A B C 0 010-1 Car 500 1 010-2 Train 302 2 Result 010 23 3 011-1 Ship 321 4 011-2 Plane 321 5 011-3 Bike 321 6 Result 011 321 来切换值)

x, y = y, x

结果:

In[7]: cond = df.A == "Result"
In[8]: df.A, df.B = np.where(cond, df.B, df.A), np.where(cond, df.A, df.B)

答案 1 :(得分:1)

长手使用np.where

<div id="startModal" class="startModal">
  <div class="choice" style="top:10px;background-color:red">Option 1</div>
  <div class=" choice" style="top:20px;background-color:green">Option 2</div>
  <div class=" choice" style="top:30px;background-color:blue">Option 3</div>
</div>

enter image description here

答案 2 :(得分:1)

尝试:

df['A'],df['B'] =df['A'].combine(df['B'],lambda x,y : [x,y] if x != 'Result' else [y,x]).str