如何交换两个Pandas数据帧中的行?

2024-09-28 23:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

给定两个pandas dataframes和一个随机数x,我如何在x点“交叉”数据帧?在

随机数:

x = 9

df1:

^{pr2}$

df2:

                Values
Parameters            
Kcd          43.576215
ka           24.103700
CID           0.000000
TGFbeta      96.228737
Ki            3.910448
Total_LR1R2  18.604000
Kr           57.097216
PR1           3.999886
PR2          14.623385
alpha         1.000000
Klid          0.420894

期望输出

孩子1:

                Values
Parameters            
Kcd          43.576215
ka           24.103700
CID           0.000000
TGFbeta      96.228737
Ki            3.910448
Total_LR1R2  18.604000
Kr           57.097216
PR1           3.999886
PR2          12.485559
alpha         1.000000
Klid          1.404747

儿童2

                Values
Parameters            
Kcd          99.789468
ka           55.137982
CID           0.000000
TGFbeta      17.842956
Ki            3.756849
Total_LR1R2  18.604000
Kr            0.089625
PR1           4.000462
PR2          14.623385
alpha         1.000000
Klid          0.420894

如您所见,该算法应该转到df1和{}的第9个元素,并在x点交换它们的信息


Tags: alphatotalparametersdf1valuescidkrka
1条回答
网友
1楼 · 发布于 2024-09-28 23:43:16

您可以使用^{}并与^{}交换值:

x = 9
df2['Values'].iloc[x-1:], df1['Values'].iloc[x-1:] = 
df1['Values'].iloc[x-1:].copy(), df2['Values'].iloc[x-1:].copy()
print df1
Parameters            
Kcd          99.789468
ka           55.137982
CID           0.000000
TGFbeta      17.842956
Ki            3.756849
Total_LR1R2  18.604000
Kr            0.089625
PR1           4.000462
PR2          14.623385
alpha         1.000000
Klid          0.420894
print df2
                Values
Parameters            
Kcd          43.576215
ka           24.103700
CID           0.000000
TGFbeta      96.228737
Ki            3.910448
Total_LR1R2  18.604000
Kr           57.097216
PR1           3.999886
PR2          12.485559
alpha         1.000000
Klid          1.404747

{cd3>测试更改:

^{pr2}$
x = 4
df2['Values'].iloc[x-1:], df1['Values'].iloc[x-1:] = 
df1['Values'].iloc[x-1:].copy(), df2['Values'].iloc[x-1:].copy()
print df1
             Values
Parameters         
Kcd               1
ka                2
CID               3
TGFbeta          10
Ki               11

print df2
             Values
Parameters         
Kcd               7
ka                8
CID               9
TGFbeta           4
Ki                5
Total_LR1R2       6

如果不使用copy(),则仅在一个df中更改值:

df2['Values'].iloc[x-1:], df1['Values'].iloc[x-1:] = 
df1['Values'].iloc[x-1:], df2['Values'].iloc[x-1:]

print df1
             Values
Parameters         
Kcd               1
ka                2
CID               3
TGFbeta           4
Ki                5
Total_LR1R2       6
print df2
             Values
Parameters         
Kcd               7
ka                8
CID               9
TGFbeta           4
Ki                5
Total_LR1R2       6

相关问题 更多 >