如何将一个df中的值复制到具有特定条件的原始df中?

2024-06-07 22:54:53 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在研究集群问题,我有一个从一个数据帧复制到原始数据帧的值的问题。你知道吗

    CustomerID | Date |     Time| TotalSum | CohortMonth| CohortIndex
--------------------------------------------------------------------
0   |17850.0|2017-11-29||08:26:00|15.30|2017-11-01|1|
--------------------------------------------------------------------
1   |17850.0|2017-11-29||08:26:00|20.34|2017-11-01|1|
--------------------------------------------------------------------
2   |17850.0|2017-11-29||08:26:00|22.00|2017-11-01|1|
--------------------------------------------------------------------
3   |17850.0|2017-11-29||08:26:00|20.34|2017-11-01|1|
--------------------------------------------------------------------

以及具有要复制的值(群集)的数据帧:

CustomerID|Cluster
------------------
12346.0   |     1
------------------
12346.0   |     1
------------------
12346.0   |     1
------------------

请帮助我解决这个问题:如何根据客户ID标准将值从第二个df复制到第一个数据帧。你知道吗

我试过这样的代码:

df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left').drop('CustomerID',1).fillna('')

但它不工作,我得到一个错误。。。你知道吗

此外,它还尝试了这样一种代码:

df, ic = [d.reset_index(drop=True) for d in (df, ic)]
ic.join(df[['CustomerID']])

但是它会得到相同的错误或者像df中没有的'Customer ID'一样的错误。。。 对不起,如果它不清楚,格式不好的问题…这是我的第一个关于stackoverflow的问题。谢谢大家。你知道吗

更新

我试过这个

df1=df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left')

 if ic['CustomerID'].values != df1['CustomerID_x'].values:
    df1.Cluster=ic.Cluster
 else:
    df1.Cluster='NaN'

但是对于同一个客户我有不同的集群。你知道吗

客户ID |日期|时间|总和|同月|同宿索引|客户ID | y |群集

0 | 17850.0 | 2017-11-29 | 08:26:00 | 15.30 | 2017-11-01 | 1 |南| 1.0

1 | 17850.0 | 2017-11-29 | 08:26:00 | 20.34 | 2017-11-01 | 1 |南| 0.0

2 | 17850.0 | 2017-11-29 | 08:26:00 | 22.00 | 2017-11-01 | 1 |南| 1.0

3 | 17850.0 | 2017-11-29 | 08:26:00 | 20.34 | 2017-11-01 | 1 |南| 2.0

4 | 17850.0 | 2017-11-29 | 08:26:00 | 20.34 | 2017-11-01 | 1 |南| 1.0


Tags: 数据代码iddf客户on错误集群
1条回答
网友
1楼 · 发布于 2024-06-07 22:54:53

鉴于你所写的,我认为你想要:

>>> df1 = pd.DataFrame({"CustomerID": [17850.0] * 4, "CohortIndex": [1,1,1,1] })
>>> df1
   CustomerID  CohortIndex
0     17850.0            1
1     17850.0            1
2     17850.0            1
3     17850.0            1

>>> df2
   CustomerID  Cluster
0     12346.0        1
1     17850.0        1
2     12345.0        1

>>> pd.merge(df1, df2, 'left', 'CustomerID')
   CustomerID  CohortIndex  Cluster
0     17850.0            1        1
1     17850.0            1        1
2     17850.0            1        1
3     17850.0            1        1

相关问题 更多 >

    热门问题