Python 如何用条件替换另一列的值
Hello(Pandas Python)简而言之,我有一个由用户id列(user_id)组成的数据框,它的组织附在第二列,它的组织合并在第三列,显然,在第三列中,所有组织都没有合并,因此有Na。也可能是相同的基本组织被重复,但这一个没有合并,这是需要的,数据框如下所示: 用户id 基地组织 合并组织 A. 苹果 Na B 一款图片分享应用 脸谱网 C Xbox 微软 D 谷歌 Na E 一款图片分享应用 Na 尝试: 输出:Python 如何用条件替换另一列的值,python,pandas,Python,Pandas,Hello(Pandas Python)简而言之,我有一个由用户id列(user_id)组成的数据框,它的组织附在第二列,它的组织合并在第三列,显然,在第三列中,所有组织都没有合并,因此有Na。也可能是相同的基本组织被重复,但这一个没有合并,这是需要的,数据框如下所示: 用户id 基地组织 合并组织 A. 苹果 Na B 一款图片分享应用 脸谱网 C Xbox 微软 D 谷歌 Na E 一款图片分享应用 Na 尝试: 输出: User_id Base_org Merge_org 0
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Apple
1 B Instagram Facebook
2 C Xbox Microsoft
3 D Google Google
4 E Instagram Instagram
一个选择:
df
:
我不知道您的实际意图,但通常最好使用基本值覆盖合并值中的na,而不是使用非空的合并值覆盖“基本”值 您可以通过一个简单的
df.loc()
语句来解决您的直接问题
df.loc[df.Merge_org != "Na", 'Base_org'] = df.Merge_org
输出:
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Apple
1 B Instagram Facebook
2 C Xbox Microsoft
3 D Google Google
4 E Instagram Instagram
这种方法和类似的方法消除了一个事实,即两行的基本值实际上是Instagram和XBox。如果要保留所有三列,则可以像这样从左到右进行替换,保留原始数据和新数据
df.loc[df.Merge_org == "Na", 'Merge_org'] = df.Base_org
输出:
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Na
1 B Facebook Facebook
2 C Microsoft Microsoft
3 D Google Na
4 E Instagram Na
User_id Base_org Merge_org
0 A Apple Apple
1 B Instagram Facebook
2 C Xbox Microsoft
3 D Google Google
4 E Instagram Instagram
这个输出对于调试和进一步开发来说效果更好。确实,正如您所说的那样,它更简单,当时我似乎很清楚,但使用您的方法后,它极大地促进了我的任务。谢谢您。为什么您会接受一个更难编码、执行时间更长的答案?因为这是一个我可以在需要时通过类调用的函数。但是你的答案也很相关谢谢你的回答,我不知道应用的功能,我意识到它非常有用!对不起,这是我的一个符号错误。你的答案是正确的:)