Python 连接重复的行

Python 连接重复的行,python,pandas,dataframe,join,Python,Pandas,Dataframe,Join,假设我有这样一个数据帧: Date Issuer Ticker Duplicate Value 0 05/14/20 00:00:00 BARCLAYS SQ 0 NaN 1 05/11/20 00:00:00 BARCLAYS SQ 0 1 2 05/11/20 00:00:00 ARGUS TTD 0 NaN 3 05/11/20 00:00

假设我有这样一个数据帧:

                Date    Issuer Ticker  Duplicate Value
0  05/14/20 00:00:00  BARCLAYS     SQ          0   NaN
1  05/11/20 00:00:00  BARCLAYS     SQ          0     1
2  05/11/20 00:00:00     ARGUS    TTD          0   NaN
3  05/11/20 00:00:00     ARGUS    TTD          0     1
4  05/11/20 00:00:00  BARCLAYS     SQ          0   NaN
我想给“Duplicate”一个值“1”,只要在同一天发生两次事件,比如:05/11/20 BARCLAYS SQ(发生两次),并将两行连接起来,这样如果“value”存在,它就会覆盖另一行中的NaN

我会非常感谢一些帮助我的人

谢谢

编辑: 加入后的预期输出:

                Date    Issuer Ticker  Duplicate Value
0  05/14/20 00:00:00  BARCLAYS     SQ          0   NaN
1  05/11/20 00:00:00  BARCLAYS     SQ          0     1
3  05/11/20 00:00:00     ARGUS    TTD          0     1

如果需要删除缺少值的行(仅针对3列名称的重复行),请使用:

mask1 = df.duplicated(['Date','Issuer','Ticker'], keep=False)
mask2 = df['Value'].notna()

df = df[~mask1 | mask2]
print (df)
                Date    Issuer Ticker  Duplicate  Value
0  05/14/20 00:00:00  BARCLAYS     SQ          0    NaN
1  05/11/20 00:00:00  BARCLAYS     SQ          0    1.0
3  05/11/20 00:00:00     ARGUS    TTD          0    1.0

如果需要删除缺少值的行(仅针对3列名称的重复行),请使用:

mask1 = df.duplicated(['Date','Issuer','Ticker'], keep=False)
mask2 = df['Value'].notna()

df = df[~mask1 | mask2]
print (df)
                Date    Issuer Ticker  Duplicate  Value
0  05/14/20 00:00:00  BARCLAYS     SQ          0    NaN
1  05/11/20 00:00:00  BARCLAYS     SQ          0    1.0
3  05/11/20 00:00:00     ARGUS    TTD          0    1.0

你能预测产量吗?如果值为
NaN,1,NaN,NaN,NaN
,则执行的输出是什么?您可以指定预期的输出吗?如果值为
NaN,1,NaN,NaN,NaN
,执行的输出是什么?我认为op希望将具有相同
Date
Ticker
的行连接起来,然后将
复制的
值更新为1@komatiraju032-谢谢,我检查了问题,然后编辑了答案。嗨,非常感谢你的帮助,有没有办法将重复=1的2个SQ和2个TTD连接起来并保留现有的值?@jezrael hi yes请查看我在原始帖子上的编辑,我在加入后添加了预期的输出,基本上是合并行,如果其中一行中缺少任何值,但另一行中存在任何值,则将其合并(对每列执行OR操作),这很好,但当我尝试向mask2添加另一列时,如下图所示:
mask2=df['Value1','Value2'].notna()
那么,当我试图将~mask1,mask2设置为df时,我遇到了一个错误,有没有办法做同样的事情并加入更多列作为值?我想op希望加入具有相同
日期和
股票代码的行,然后将
重复的
值更新为1@komatiraju032-谢谢,我检查了问题,然后编辑了答案。您好,非常感谢您的帮助,有没有办法将重复=1的2个SQ和2个TTD连接起来并保留现有的值?@jezrael您好,请检查我在原始帖子上的编辑,我在加入后添加了预期的输出,基本上是合并行,如果其中一行中缺少任何值,但另一行中存在任何值,则将其合并(对每列执行OR操作),这很好,但当我尝试向mask2添加另一列时,如下图所示:
mask2=df['Value1','Value2'].notna()
当我试图将~mask1,mask2设置为df时,我遇到了一个错误,有没有办法做同样的事情并加入更多列作为值?