如何解决根据另一列中的值及其索引生成新列
在下面的df中,我想基于列“ A”和“ X”对列“ cdf_X”的值进行排序。列“ X”和“ cdf_X”已连接,因此,如果“ X”中的值出现在“ A”列中,则应将“ cdf_X”的值重新定位到新列中列“ A”的索引号。 (值在“ cdf_A”列中不会出现两次。)
例如:索引0处的'X'= 3->索引0处的cdf_X = 0.05->索引4处的'A'列中出现'3'->索引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,7,13]})
df.loc[:,'cdf_A'] = df['cdf_X'].where(df['A'] == df['X'])
print(df)
解决方法
使用map
df['cdf_A'] = df.A.map(df.set_index('X')['cdf'])
,
我认为您需要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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。