python - 如何在条件下分组/标记到同一组
问题描述
我有一个如下所示的数据框。此数据框包含名称和地址信息。
l_name f_name m_name city_state zip
smith sam auburn,wa 98910
smith sam c auburn,wa 98910
smith sam durham,nc 27659
smith sam eddie auburn,wa 98910
smith sam auburn,wa 98910
:
:
aaron joe chris ocala,fl 58910
aaron joe ocala,fl 58910
aaron joe durham,nc 27659
aaron joe ocala,fl 58910
aaron joe a ocala,fl 58910
我正在尝试创建一个代码,如果它们的 l_name、f_name、city_state 和 zip 列都匹配,则可以将它们分组/标记到同一组中。
这是我希望的输出数据框。
l_name f_name m_name city_state zip tag
smith sam auburn,wa 98910 1
smith sam c auburn,wa 98910 1
smith sam durham,nc 27659 0
smith sam eddie auburn,wa 98910 1
smith sam auburn,wa 98910 1
clair may seattle,wa 98092 2
clair may a seattle,wa 98092 2
clair may seattle,wa 98092 2
:
:
aaron joe chris ocala,fl 58910 n
aaron joe ocala,fl 58910 n
aaron joe durham,nc 27659 0
aaron joe ocala,fl 58910 n
aaron joe a ocala,fl 58910 n
如果此人不属于任何组,它将为其分配一个 0。4 sam smith 满足条件,因此它们都在同一个组中,即 1。因此标签/组 2 将是 may clair,而 joe aaron 将是 n 组,具体取决于数据帧中存储了多少名称。
我想知道有什么好的方法、方法或建议可以让我创建一个可以输出我想要的结果的代码吗?
谢谢!
解决方案
您可以获取具有 > 1 个计数的组并获取组号(和 +1 ),然后对于计数为 1 的组,设置 tag = 0。然后连接。
df1 = df[df.groupby(['l_name', 'f_name', 'city_state', 'zip'])['m_name'].transform('count')>1].copy()
df1['tag'] = df1.groupby(['l_name', 'f_name', 'city_state', 'zip']).ngroup() + 1
df2 = df[df.groupby(['l_name', 'f_name', 'city_state', 'zip'])['m_name'].transform('count')==1].copy()
df2['tag'] = 0
df_final = pd.concat([df1,df2])
df_final
l_name f_name m_name city_state zip tag
0 smith sam x auburn,wa 98910 2
1 smith sam c auburn,wa 98910 2
3 smith sam eddie auburn,wa 98910 2
4 smith sam x auburn,wa 98910 2
5 aaron joe chris ocala,fl 58910 1
6 aaron joe x ocala,fl 58910 1
8 aaron joe x ocala,fl 58910 1
9 aaron joe a ocala,fl 58910 1
2 smith sam x durham,nc 27659 0
7 aaron joe x durham,nc 27659 0
推荐阅读
- android - 使用 ViewPager 自动循环播放幻灯片
- database - 使用 Informix 的“卸载”句子中的错误
- reactjs - 在反应中将道具从javascript转换为打字稿
- umbraco7 - Umbraco 在页面 URL 的开头添加了额外的斜杠
- typescript - 使用 Typescript 嵌套承诺的 Firebase 函数
- google-cloud-platform - 将大 json 保存到谷歌云数据存储
- python - 错误:系列不明确 | 具有多个参数的函数 | 数据框
- c++ - 每当我尝试为 UE4 FPS 教程第 2.7 节执行以下代码时,都会出现错误代码。我错过了什么?
- excel - 将所选行复制并粘贴到另一个工作簿
- python - 根据来自另一个数据帧的时间值从一个数据帧中获取值