我试过chat gpt,但是没有用。我有一个可重复的 Dataframe ,其中相同的描述出现在两个代码中。但是我需要在末尾添加一个“X”来区分描述(例如)。也就是说,每个“gce_cod”应该只有一个“gce_descri”,每个“gce_descri”应该只有一个“gce_cod”,而不管其他列(在本例中为“time”)
df = pd.DataFrame({
'time': [1,1,1,1,1,1,2,2,2,2,2,2],
'gce_cod': ['A1', 'A2', 'A3', 'A4', 'A1','A5','A1', 'A2', 'A3', 'A4', 'A1','A5'],
'gce_descri': ['description1', 'description2', 'description1', 'description3', 'description1','description2','description1', 'description2', 'description1', 'description3', 'description1','description2']})
输出应为:
df = pd.DataFrame({
'time': [1,1,1,1,1,1,2,2,2,2,2,2],
'gce_cod': ['A1', 'A2', 'A3', 'A4', 'A1','A5','A1', 'A2', 'A3', 'A4', 'A1','A5'],
'gce_descri': ['description1', 'description2', 'description1X', 'description3', 'description1','description2X','description1', 'description2', 'description1X', 'description3', 'description1','description2X']})
非常感谢帮助!
3条答案
按热度按时间n7taea2i1#
我尝试了一段时间后得出了这个解决方案:
首先,我用水果表情符号重新制作了你的数据框,让变化更明显:
则此解决方案需要对数据进行排序
因为我们将对结果的出现次数进行累计求和,但是由于这个计数有一些条件,我们将创建另一个列,其中包含一个键,以便稍后对df进行分组。
然后是棘手的部分。
我所理解的这个累积和的条件是:
1.每个总和的范围是一个时间段
1.仅在以下情况下才对值进行计数:a)结果重复B)出现不同的“gce_cod”
所以我为变量'key'的唯一出现做了另一个df,这个变量是我们在最后一步做的,Regard是一个由我们开始df的三个变量组成的变量,那么我们就不能把这个累加和做在'count'变量中。
最后,我们通过“key”变量合并df,并根据“count”值重复水果数量。
这就是我们努力的成果
r6vfmomb2#
使用2个布尔掩码:一个用于
gce_cod/gce_descri
列的两个副本(按行),一个用于gce_descri
列,以进一步计算它们之间的 * 按位异或 *^
:nhaq1z213#
首先,使用pd.Dataframe.duplicated查找重复项
然后使用pd.where将那些重复的行替换为您自己的值。
输出
Output
注意:-将更改“gce_descri”中的所有重复值