gpt4 book ai didi

python - 按另一列的顺序对包含 NA 的一列中的值进行排序

转载 作者:行者123 更新时间:2023-12-01 03:56:13 25 4
gpt4 key购买 nike

我在 pandas 中有一个数据框

import pandas as pd

df=pd.DataFrame.from_dict({'col1':['A_2','A_1','A_3','A_4','A_6','A_5','A_8','A_7'],
'col2':['NaN','A_2','A_3','A_4','A_5','NaN','A_1','A_6']}, orient='index').T

我想更改第二列 col2 的顺序并更改它,以便两列中相同的项目像这样匹配:

       col1     col2
0 A_2 A_2
1 A_1 A_1
2 A_3 A_3
3 A_4 A_4
4 A_6 A_6
5 A_5 A_5
6 A_7 NaN
7 A_8 NaN

尝试:df.iloc[:,1].sort_values(df.iloc[:,0]) 仅返回有关不可散列系列的错误消息

假设现在有两个数据框:

df1:

df1=pd.DataFrame({'col1':['A_2','A_1','A_3','A_4','A_6','A_5','A_8','A_7'],
'col2':[0,1,1,0,0,1,1,0], 'col3':[1,6,7,5,4,3,9,8]})

df2=pd.DataFrame({'N1':['NaN','A_2','A_3','A_4','A_5','NaN','A_1','A_6'],
'N2':['NaN',0,1,2,3,'NaN',0,1], 'N3':['NaN',0,0,0,0,'NaN',0,0]})

我想像上面一样排序,但这一次,df2中的所有列和行:

输出:

N1    N2    N3
A_2 0 0
A_1 0 0
A_3 1 0
A_4 2 0
A_6 1 0
A_5 3 0
NaN NaN NaN
NaN NaN NaN

最佳答案

如果我理解正确的话,当 col1 中的值存在于 col2 中时,您可以使用 col1 中的值重写 col2:

df.col2 = df.col1[df.col1.isin(df.col2)]

结果:

df
Out[13]:
col2 col1
0 A_2 A_2
1 A_1 A_1
2 A_3 A_3
3 A_4 A_4
4 A_6 A_6
5 A_5 A_5
6 NaN A_8
7 NaN A_7
<小时/>

编辑:使用两个数据框扩展问题

这隐含地假设 df2.N1 中的值是唯一的(NaN 值除外)。因此,我们可以使用它们作为索引,从 N2N3 中获取相应的值。然后我们可以使用 df1.col1 作为索引值:

In[53] : df2.set_index('N1', drop=False).loc[df1.col1]
Out[53]:
N1 N2 N3
N1
A_2 A_2 0 0
A_1 A_1 0 0
A_3 A_3 1 0
A_4 A_4 2 0
A_6 A_6 1 0
A_5 A_5 3 0
A_8 NaN NaN NaN
A_7 NaN NaN NaN

您随时可以添加 .reset_index(drop=True) 来重置索引。

关于python - 按另一列的顺序对包含 NA 的一列中的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37417889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com