我的数据集如下所示:
Paste_Values AB_IDs AC_IDs AD_IDs
AE-1001-4 AB-1001-0 AC-1001-3 AD-1001-2
AE-1964-7 AB-1964-2 AC-1964-7 AD-1964-1
AE-2211-1 AB-2211-1 AC-2211-3 AD-2211-2
AE-2182-4 AB-2182-6 AC-2182-7 AD-2182-5
我需要将Paste_values
列中的所有值与一行中的所有其他三个值进行比较。你知道吗
例如:
AE-1001-4分为AE
和1001-4
两部分,我们需要检查1001-4
是否存在其他列
如果它不存在,我们需要创建新的列来放置相同的AE-1001-4
如果1001-4
与其他列匹配,我们需要在'AE-1001-5'中对其进行更改,并将其放入新列中
之后:
如果没有匹配项,我需要将Paste_values
的值写入名为new_paste_value
的新创建列中。你知道吗
如果在同一行的其他列中有匹配项(相同的值),那么我需要将值的最后一位从Paste_values
列更改,这样整个值就不应该与行中任何其他整值中的值相同,并且新生成的值应该写入new_paste_value
列。你知道吗
我需要对数据框中的每一行都这样做。你知道吗
所以结果应该是这样的:
Paste_Values AB_IDs AC_IDs AD_IDs new_paste_value
AE-1001-4 AB-1001-0 AC-1001-3 AD-1001-2 AE-1001-4
AE-1964-7 AB-1964-2 AC-1964-7 AD-1964-1 AE-1964-3
AE-2211-1 AB-2211-1 AC-2211-3 AD-2211-2 AE-2211-4
AE-2182-4 AB-2182-6 AC-2182-4 AD-2182-5 AE-2182-1
我该怎么做?你知道吗
从定义要应用于数据帧每行的函数开始:
一点解释:
行参数实际上是一个系列,索引值取自 列名。你知道吗
所以流行音乐('Paste_Values')删除第一个值,该值保存在v1 而其余的保持在rr中。你知道吗
然后v1[3:]提取v1的“其余部分”(没有“AE-”) 和结构包含检查rr的每个元素 在结束位置包含此字符串。你知道吗
有了这个解释,这个函数的其余部分应该是 可以理解。如果没有,则执行每个单独的指令 打印结果。你知道吗
唯一要做的就是把这个函数应用到你的数据帧上, 将结果替换为新列:
为了运行测试,我创建了以下数据帧:
我没有收到这个数据的错误。对上述数据进行测试。 也许你的错误是在别的地方?你知道吗
可能您的数据帧还包含其他(float)列, 你的问题中没有包括。 如果是这样,在数据帧的副本上运行我的函数, 删除此“其他”列。你知道吗
相关问题 更多 >
编程相关推荐