【发布时间】:2019-10-12 12:57:25
【问题描述】:
目前我正在研究聚类问题,我在将值从一个数据帧复制到原始数据帧时遇到了问题。
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 中没有的“客户 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':[0, 1, ...这样的东西,如果你可以用反引号to make it read more like code包围你的内联代码,那就太好了。 -
这里是link,用于下载带有数据的 csv 文件。我已经对原始集进行了很大的更改,所以我将带有转换后数据的文件提供给您
-
我试过
df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left').drop('CustomerID',1).fillna('')并在 df 中得到了空列 'Cluster'。我做错了什么?
标签: python arrays pandas dataframe copy