python - 为两个数据框创建列转换表
问题描述
我有两个数据框,其中一个有大约 300 列,另一个有大约 30 列。
第二个数据框中的 30 列都来自第一个,但都有不同的列名。
如何对第一个表上的这 30 列进行分析,以显示它们最有可能代表哪些列?
有没有办法使用 Pandas 做到这一点?
示例数据:
sample_dict_1 = {
'col_1': [1,2,3,4,5],
'col_2': [6,7,8,9,10],
'col_3': [11,12,13,14,15],
'col_4': [16,17,18,19,20],
'col_4': [21,22,23,24,25]
}
sample_dict_2 = {
'col_a': [11,12,13,14,15],
'col_b': [6,7,8,9,10],
'col_c': [21,22,23,24,28]
}
df1 = pd.DataFrame(sample_dict_1)
df2 = pd.DataFrame(sample_dict_2)
从上面的数据可以看出 col_a 和 col_b 匹配 col_3 和 col_2。
col_c 部分匹配 col_4。
我想产生一个输出,给我表格的匹配百分比,例如:
col_a
col_3 100%
col_1 0%
...
col_c
col_4 80%
col_1 0%
...
解决方案
不过,您已经有了答案:
如果帧没有相同的索引(索引可以保存并在之后重置):
df1.reset_index(inplace=True)
df2.reset_index(inplace=True)
然后:
df = pd.DataFrame({c2: [f'{(df2[c2] == df1[c1]).sum() / df2.shape[0] * 100:.0f}%'
for c1 in df1.columns]
for c2 in df2.columns},
index=df1.columns)
结果(print(df)
):
col_a col_b col_c
col_1 0% 0% 0%
col_2 0% 100% 0%
col_3 100% 0% 0%
col_4 0% 0% 0%
col_5 0% 0% 80%
推荐阅读
- django - Django 中的日期和时间解析错误 ["'Tue, 02 Jul 2019 08:11:45 +0530' 值的格式无效。在 YYYY-MM-DD HH:MM[:ss[.uuu]][TZ]格式。”]
- python - 当我制作猎鹰 API 时,我的 excel 已损坏
- vba - 有没有办法让 VBA 代码检查 WINRAR 的两个不同位置
- neo4j - 如何正确编写暴发户脚本?
- java - 摇摆闪烁
- python - 无法为 heroku local 指定运行时
- asp.net - 我如何收听 Dockerized .NET Web 应用程序
- c - 指向字符串的指针数组(指针的基本类型)
- html - 学生科目的 Xampp 数据库
- java - 通过减少列表中的代码/操作数量来优化方法