给定两个pandas dataframes
和一个随机数x
如何在点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
孩子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
点交换信息
答案 0 :(得分:1)
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