根据另一列中的值将值添加到熊猫数据框的一列中

杜松

假设我有两个矩阵,一个原始矩阵和一个参考矩阵:

import pandas as pa
print "Original Data Frame"
# Create a dataframe
oldcols = {'col1':['a','a','b','b'], 'col2':['c','d','c','d'], 'col3':[1,2,3,4]}
a = pa.DataFrame(oldcols)
print "Original Table:"
print a

print "Reference Table:"
b = pa.DataFrame({'col1':['x','x'], 'col2':['c','d'], 'col3':[10,20]})
print b

这些表如下所示:

Original Data Frame
Original Table:
  col1 col2  col3
0    a    c     1
1    a    d     2
2    b    c     3
3    b    d     4

Reference Table:
  col1 col2  col3
0    x    c    10
1    x    d    20

现在,我想从原始表(a)的第三列(col3)中减去两个表的第二列匹配的行中的参考表(c)中的值。因此,表2的第一行应将值10添加到第三列,因为表b的列(其中列为col2的行为'c')在col3中的值为10。合理?这是执行此操作的一些代码:

col3 = []
for ix, row in a.iterrows():
    col3 += [row[2] + b[b['col2'] == row[1]]['col3']]

a['col3'] = col3
print "Output Table:"
print a

产生以下输出:

Output Table:
  col1 col2  col3
0    a    c  [11]
1    a    d  [22]
2    b    c  [13]
3    b    d  [24]

我的问题是,是否有更优雅的方法可以做到这一点?同样,“ col3”中的结果也不应列出。也欢迎使用numpy的解决方案。

贝扎德·诺里

我不太了解您对要执行的操作的描述,但是可以通过首先合并两个数据帧然后进行一些简单的操作来生成显示的输出。

>>> df = a.merge(b.filter(['col2', 'col3']), how='left',
                 left_on='col2', right_on='col2', suffixes=('', '_'))
>>> df
  col1 col2  col3  col3_
0    a    c     1     10
1    b    c     3     10
2    a    d     2     20
3    b    d     4     20

[4 rows x 4 columns]
>>> df.col3_.fillna(0, inplace=True) # in case there are no matches
>>> df.col3 += df.col3_
>>> df
  col1 col2  col3  col3_
0    a    c    11     10
1    b    c    13     10
2    a    d    22     20
3    b    d    24     20

[4 rows x 4 columns]
>>> df.drop('col3_', axis=1, inplace=True)
>>> df
  col1 col2  col3
0    a    c    11
1    b    c    13
2    a    d    22
3    b    d    24

[4 rows x 3 columns]

如果incol2中的b不是唯一的,则可能还需要类似以下内容:

>>> b.groupby('col2', as_index=False)['col3'].aggregate(sum)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猪根据另一列中的值添加列

来自分类Dev

根据另一列中的多个条件在熊猫数据框中填充一列

来自分类Dev

在R中,如何根据第一列的内容将一列添加到数据框中?

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

来自分类Dev

python pandas df:根据另一列中该行的值添加到一列

来自分类Dev

将列添加到PySpark DataFrame中,具体取决于列值是否在另一列中

来自分类Dev

根据另一行中另一列的值将列添加到数据框中

来自分类Dev

如何将一列添加到由另一列的n个先前值的数组组成的Pandas数据框中?

来自分类Dev

使用(从唯一列中提取唯一值)将一列添加到数据框

来自分类Dev

根据另一列中的相同值组合熊猫数据框列中的文本值

来自分类Dev

根据条件在数据框列中更改值,在另一列中更改值

来自分类Dev

根据同一数据框另一列中的字符将文本列添加到数据框

来自分类Dev

如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

来自分类Dev

根据另一个数据框中的值将列添加到数据框中

来自分类Dev

如何将差异序列结果添加到熊猫数据框中的索引0的另一列?

来自分类Dev

快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

来自分类Dev

根据数据框中另一列的值汇总和计算一列的唯一值

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

来自分类Dev

使用(从唯一列中提取唯一值)将一列添加到数据框

来自分类Dev

如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

来自分类Dev

如何将一列中的值映射到数据框的另一列?

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

使用 R 将一列中的值添加到另一列中,第二列中存在缺失值

来自分类Dev

如何将一列添加到基于另一列中的值向上计数的数据框中?

来自分类Dev

根据熊猫数据框中另一列的最后一个值填充列

来自分类Dev

根据参考 [Excel] 将一列中的值添加到另一列

Related 相关文章

  1. 1

    猪根据另一列中的值添加列

  2. 2

    根据另一列中的多个条件在熊猫数据框中填充一列

  3. 3

    在R中,如何根据第一列的内容将一列添加到数据框中?

  4. 4

    根据另一列中的值对pandas数据框中的列进行归一化

  5. 5

    Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

  6. 6

    python pandas df:根据另一列中该行的值添加到一列

  7. 7

    将列添加到PySpark DataFrame中,具体取决于列值是否在另一列中

  8. 8

    根据另一行中另一列的值将列添加到数据框中

  9. 9

    如何将一列添加到由另一列的n个先前值的数组组成的Pandas数据框中?

  10. 10

    使用(从唯一列中提取唯一值)将一列添加到数据框

  11. 11

    根据另一列中的相同值组合熊猫数据框列中的文本值

  12. 12

    根据条件在数据框列中更改值,在另一列中更改值

  13. 13

    根据同一数据框另一列中的字符将文本列添加到数据框

  14. 14

    如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

  15. 15

    根据另一个数据框中的值将列添加到数据框中

  16. 16

    如何将差异序列结果添加到熊猫数据框中的索引0的另一列?

  17. 17

    快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

  18. 18

    根据数据框中另一列的值汇总和计算一列的唯一值

  19. 19

    根据另一列中的值将值添加到熊猫数据框的一列中

  20. 20

    根据另一列中的值对pandas数据框中的列进行归一化

  21. 21

    Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

  22. 22

    使用(从唯一列中提取唯一值)将一列添加到数据框

  23. 23

    如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

  24. 24

    如何将一列中的值映射到数据框的另一列?

  25. 25

    根据熊猫中另一列上的值在数据框中创建一个新列

  26. 26

    使用 R 将一列中的值添加到另一列中,第二列中存在缺失值

  27. 27

    如何将一列添加到基于另一列中的值向上计数的数据框中?

  28. 28

    根据熊猫数据框中另一列的最后一个值填充列

  29. 29

    根据参考 [Excel] 将一列中的值添加到另一列

热门标签

归档