Python 如何在一定条件下将值从一个df复制到原始df?

Python 如何在一定条件下将值从一个df复制到原始df?,python,arrays,pandas,dataframe,copy,Python,Arrays,Pandas,Dataframe,Copy,目前,我正在处理集群问题,并且我在将值从一个数据帧复制到原始数据帧时遇到问题 CustomerID | Date | Time| TotalSum | CohortMonth| CohortIndex -------------------------------------------------------------------- 0 |17850.0|2017-11-29||08:26:00|15.30|2017-11-01|1| ------------------

目前,我正在处理集群问题,并且我在将值从一个数据帧复制到原始数据帧时遇到问题

    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|
--------------------------------------------------------------------
以及要复制的具有值(群集)的数据帧:

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

    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|
--------------------------------------------------------------------
我试过这样的代码:

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中没有的“客户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 x |日期|时间|总和|同月|同月|同级索引|客户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鉴于你所写的,我想你想要:

df1=pd.DataFrame({“CustomerID”:[17850.0]*4,“coortindex”:[1,1,1]}) >>>df1 CustomerID-coortindex 0 17850.0 1 1 17850.0 1 2 17850.0 1 3 17850.0 1 >>>df2 客户ID群集 0 12346.0 1 1 17850.0 1 2 12345.0 1 >>>pd.merge(df1、df2、'左'、'客户ID') CustomerID上索引簇 0 17850.0 1 1 1 17850.0 1 1 2 17850.0 1 1 3 17850.0 1 1
如果您可以提供初始化数据帧的代码,以便人们可以复制粘贴作为工作基础,这将非常有帮助。类似于
df1=pd.DataFrame({'CustomerID':[0,1,…
另外,如果您可以用背景符号
环绕您的内联代码,使其更像代码,那就太好了。这里是下载带有数据的csv文件的方法。我对原始设置做了很大的更改,因此我给您提供了带有转换数据的文件,我尝试了
df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left')。drop('CustomerID',1)。fillna(“”)
并在df中得到空列'Cluster'。我做错了什么?是的,你完全正确。如果你知道它的工作原理,我需要查找excel函数