我有两个名为df和df2的数据帧,下面显示了两者的一个小示例.因为两个dataFrame中条目的顺序不同,所以我想通过匹配df2列的dataFrame条目和df1的FileName列条目,将这两个条目连接成一个组合的DataFrame.下面还提供了最终理想数据帧的示例.

df = pd.DataFrame({'filename': ['Fe12Co4BN.cif', 'Fe16N2.cif', 'Fe15CoBN.cif'],
               'jml_bp_mult_atom_rad': [170.11, 154.73, 172.43],
               'jml_hfus_add_bp': [45.13, 41.90, 47.23]})

df2 = pd.DataFrame({'formula': ['Fe12Co4BN','Fe15CoBN','Fe16N2'],
                'nsites': [8, 8, 8],
                'number': [139, 139, 140]})

合并的dataFrame应该如下所示:

df3 = pd.DataFrame({'formula': ['Fe12Co4BN','Fe15CoBN','Fe16N2'],
                'jml_bp_mult_atom_rad': [170.11, 172.43, 154.73],
                'jml_hfus_add_bp': [45.13, 47.23, 41.90],
                'nsites': [8, 8, 8],
                'number': [139, 139, 140]})

列的顺序对我很重要,所以‘公式’列应该首先跟在df1中的列之后,然后是df2.

先谢谢你了.

推荐答案

在First DataFrame df中创建一个临时列并使用Merge:

out = df2.merge(
    df.assign(formula=df["filename"].str.split(".").str[0]), on="formula"
).drop(columns="filename")

print(out)

打印:

     formula  nsites  number  jml_bp_mult_atom_rad  jml_hfus_add_bp
0  Fe12Co4BN       8     139                170.11            45.13
1   Fe15CoBN       8     139                172.43            47.23
2     Fe16N2       8     140                154.73            41.90

Python相关问答推荐

在线条上绘制表面

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

Stacked bar chart from billrame

部分视图的DataFrame

多指标不同顺序串联大Pandas 模型

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

try 检索blob名称列表时出现错误填充错误""

如何使用OpenGL使球体遵循Python中的八样路径?

在matplotlib中使用不同大小的标记顶部添加批注

在Python中从嵌套的for循环中获取插值

Pandas—堆栈多索引头,但不包括第一列

如何强制向量中的特定元素在Gekko中处于优化解决方案中

在第一次调用时使用不同行为的re. sub的最佳方式

如何在Python中从html页面中提取html链接?

为什么在生成时间序列时,元组索引会超出范围?

大Pandas 每月重新抽样200万只和300万只

通过PyTorch中的MIN函数传递渐变

滑动子数组美容工作在IDE上,但不是在leetcode上

对齐多个叠置多面Seborn CAT图

滚动加权平均(或类似)填充失踪大Pandas