在下面的df中,我想基于列“ A”和“ X”对列“ cdf_X”的值进行排序。列“ X”和“ cdf_X”已连接,因此,如果列“ A”中出现“ X”中的值,则应将“ cdf_X”的值重新定位到新列中列“ A”的索引号。(值在“ cdf_A”列中不会出现两次。)
示例:在索引0处'X'= 3->在索引0处cdf_X = 0.05->'3'出现在索引4的'A'列中->索引4处cdf_A =索引0处cdf_X
初始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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句