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函数