python - 加入/合并相同的数据框以在熊猫中进行转换
问题描述
我尝试了解 panda join/merge 中的一些内容以及它是如何工作的,就我而言,我使用了这篇文章中的解决方案
所以我的输入:
dd = pd.DataFrame({
'Frame':[0,0,31,31,49,49,49,49,49,49,52,54,101,101],
'm_label':['BBPS','BBPS','Actions','Actions','BBPS','Findings','Findings','BBPS','Findings','Findings','TR','TR','Action','Action'],
'details':['3','start','IR','start' ,'2', 'PL', 'end','end','DV','start','HP','SP','IR','end']})
我期望:
frame m_label details
0 Findings.DV start
0 Findings.DV end
0 BBPS.3 start
31 Actions.IR start
99 Action.IR end
99 Findings.PL start
99 Findings.PL end
99 BBPS.2 end
52 TR.HP HP
54 TR.SP SP
101 Action.IR end
因此,当我遵循解决方案并仅添加新标签“SP”、“HP”时:
detail_type = dd['details'].isin({'SP', 'HP', 'start', 'end'})
df_cv = pd.merge(dd[~detail_type], dd[detail_type].rename(columns={'details': 'detail_type'}))
df_cv = df_cv.drop(columns=['m_label', 'details']).join(df_cv['m_label'].str.cat(df_cv['details'], sep='.'))
输出错误 - 例如它仅适用于“开始”和“结束”标签,但值detail_type
工作良好(它的标签 True/False 也适用于 4 个标签)好的,我将新标签放在 diff 列表中,并且在此行代码中没有~pd.merge(data_cv[detail_type]
,如果我把它留在同一个地方输出会是错误的:
detail_type = dd['details'].isin(['SP','HP'])
df_dd = pd.merge(dd[detail_type], dd[detail_type].rename(columns={'details': 'detail_type'}))
df_dd = df_dd.drop(columns=['m_label', 'details']).join(df_dd['m_label'].str.cat(df_dd['details'], sep='.'))
对标签 'end' 和 'start' 重复相同的代码到不同的 df(现在使用~)
detail_type = dd['details'].isin({'end','start'})
df_cv = pd.merge(dd[~detail_type], dd[detail_type].rename(columns={'details': 'detail_type'}))
df_cv = df_cv.drop(columns=['m_label', 'details']).join(df_cv['m_label'].str.cat(df_cv['details'], sep='.'))
最后,只需连接 df:
df_cv = pd.concat([df_dd,df_cv])
有点奇怪。我想,我错过了一些东西,不明白它到底是如何工作的。
我的问题,为什么它不能同时用于 4 个标签('end'、'start'、'hp'、'sp')以及代码中的~是什么意思pd.merge(dd[~detail_type]
谢谢。
解决方案
推荐阅读
- java - 使用 gradle 在 7.6 版上执行 Sonarqube src/test
- apache-kafka - 如何将部分主题数据从一个集群复制到另一个集群
- haskell - Haskell 为替代的 Either 数据类型定义 Functor 实例
- r - hms 函数踢出 NA
- google-maps - Phonegap/Cordova 地理定位提醒特定位置附近有什么
- c# - 除非存在框架 3.5,否则程序集无法通过 COM 互操作加载?
- python - 靠近对象时如何抵消x和y坐标的缩放
- javascript - 有谁知道为什么会出现这个数学和本地存储问题?
- angular - 如何访问由组件工厂解析器动态创建的组件内的实例变量
- python - 查询字典时返回不同的值