如何交换 2 pandas 数据帧中的行?
How to swap rows in 2 pandas dataframes?
给定两个 pandas dataframes
和一个随机数 x
我如何 'crossover' x 点的数据帧?
随机数:
x = 9
df1:
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 12.485559
alpha 1.000000
Klid 1.404747
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
期望的输出
child1:
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
child 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
和 df2
的第 9 个元素,并在 x
点交换它们的信息
您可以使用 copy
and swap values with iloc
:
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
为了测试 DataFrames
已更改:
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 10
Ki 11
Total_LR1R2 12
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
给定两个 pandas dataframes
和一个随机数 x
我如何 'crossover' x 点的数据帧?
随机数:
x = 9
df1:
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 12.485559
alpha 1.000000
Klid 1.404747
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
期望的输出
child1:
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
child 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
和 df2
的第 9 个元素,并在 x
您可以使用 copy
and swap values with iloc
:
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
为了测试 DataFrames
已更改:
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 10
Ki 11
Total_LR1R2 12
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