根据另一列中的值及其索引生成新列

Generate new column based on values in another column and their index

在下面的 df 中,我想根据列 'A' 和 'X' 对列 'cdf_X' 的值进行排序。 'X'列和'cdf_X'列是相连的,因此如果'X'中的值出现在'A'列中,则'cdf_X'的值应该重新定位到该索引号新列中的列 'A'。 (值不会在列 'cdf_A' 中出现两次。)

示例:'X'=3 在索引 0 -> cdf_X=0.05 在索引 0 -> '3' 出现在索引 4 的 'A' 列中 -> cdf_A 在索引 4 = cdf_X 在索引 0

初始 df:

    A   X   cdf_X
0   7   3    0.05
1   4   4    0.15
2  11   7    0.27
3   9   9    0.45
4   3  11    0.69
5  13  13    1.00

期望的 df:

    A   X   cdf_X   cdf_A      
0   7   3    0.05    0.27     
1   4   4    0.15    0.15
2  11   7    0.27    0.69
3   9   9    0.45    0.45
4   3  11    0.69    0.05
5  13  13    1.00    1.00

尝试过的代码:

import pandas as pd

df = pd.DataFrame({"A": [7,4,11,9,3,13],

               "cdf_X": [0.05,0.15,0.27,0.45,0.69,1.00],

                   "X": [3,4,7,9,11,13]})

df.loc[:, 'cdf_A'] = df['cdf_X'].where(df['A'] == df['X'])

print(df)

我觉得你需要replace

df['cdf_A'] = df.A.replace(df.set_index('X').cdf)

Out[989]:
    A   X   cdf  cdf_A
0   7   3  0.05   0.27
1   4   4  0.15   0.15
2  11   7  0.27   0.69
3   9   9  0.45   0.45
4   3  11  0.69   0.05
5  13  13  1.00   1.00

检查map

df['cdf_A'] = df.A.map(df.set_index('X')['cdf'])