如何在没有for循环的情况下使用不同的数据框创建列

负载箱

我有一个主数据框df和另一个数据框ext_map

df = pd.DataFrame(data={'true': [1, 2, 3], 'billed': [4, 5, 6], 'genre':['a','b','c']})

    true    billed  genre
0    1         4    a
1    2         5    b
2    3         6    c

ext_map = pd.DataFrame(data={'label':[1,2,3], 'a':[1.1,1.2,1.3], 'b':[2.1,2.2,2.3],'c':[3.1,3.2,3.3]})

    label   a   b   c
0    1      1.1 2.1 3.1
1    2      1.2 2.2 3.2
2    3      1.3 2.3 3.3

我想new_col在我的主数据框中创建一个新列,以便对于中的每一行df我想从列中获取值a, b, cof ext_mapbasedrow.genre并且row.true与标签相同ext_map

[预期的]

    true    billed  genre new_col
0    1         4      a     1.1
1    2         5      b     2.3
2    3         6      c     3.3
一只蚂蚁

像一个声音,你应该能够加入一个修改版本的ext_mapdf做到这一点。这里有一些很好的文档:https : //pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

一个粗略的例子(可能有更简洁的方法来做到这一点):

可以从广泛的格式的数据枢转至长格式(列举的每个组合truegenre使用)pd.melt()

temp = ext_map.melt(id_vars=['label'], value_vars=['a', 'b', 'c'], var_name='genre', value_name = 'new_col')

这产生了这个结果:

   label     genre  new_col
0      1        a      1.1
1      2        a      1.2
2      3        a      1.3
3      1        b      2.1
4      2        b      2.2
5      3        b      2.3
6      1        c      3.1
7      2        c      3.2
8      3        c      3.3

然后使用pd.merge()您提到的查找方法连接数据帧:

df.merge(temp, left_on = ['true', 'genre'], right_on = ['label', 'variable'])

给你这个结果:

   true  billed genre  label variable  new_col
0     1       4     a      1        a      1.1
1     2       5     b      2        b      2.2
2     3       6     c      3        c      3.3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有父子关系的情况下使用不同的服务实例?

如何在没有循环的情况下通过列名和索引列表向数据框的列添加值

如何在没有for循环的情况下从不同的数据帧中获取值?

如何在不使用 python 循环的情况下创建引用数据框和字典的当前列的条件列?

如何在不合并的情况下将具有不同列的数据框合并?

如何在没有列标题的情况下将pandas数据框转换为字典?

如何在没有公共列的情况下合并两个数据框

如何在没有公共列的情况下合并两个数据框

对值是日期的熊猫数据框进行排序(如何在没有聚合的情况下创建数据透视表)

在没有for循环的情况下更改数据框中多列的类

在不使用for循环的情况下使用pandas创建数据框的有效方法

如何在R中没有for循环的情况下创建条件整数序列的组合?

如何在不循环的情况下将python JSON列表转换为数据框列

如何在不拆分具有不同条件的数据框的情况下执行公式

如何在没有公共索引的情况下将Pandas数据框用作地图

如何在没有my_compute_function的情况下访问数据框

如何在不使用for循环的情况下替换数据框中的某些行

如何在不创建新列的情况下增加数据框中的值?

如何在不更改行数和列数的情况下从矩阵创建数据框?

如何在不使用索引的情况下连接不同列上的两个数据框

如何在没有ObjectNode的情况下创建ValueNode?

如何在没有PGID的情况下创建链接

如何在没有 ThreadGroup 的情况下创建线程?

如何在没有太多循环的情况下删除多列中的重复行?

如何在没有for循环的情况下连接矩阵的列重复

在没有索引列的情况下使用 xlwings 导出数据框

如何在没有数据库的情况下创建Yii2模型

如何在不使用 for 循环的情况下有条件地从数据框中删除列?

如何在不使用框架的情况下创建/显示不同的数据数组和对象?