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时,我遇到了一个错误,有没有办法做同样的事情并加入更多列作为值?