繁体   English   中英

Pandas:比较 dataframe 中的行并应用 function

[英]Pandas: Compare rows in a dataframe and apply a function

我有一个pandas dataframe像:

Reporter  Partner  Element  Value
'A'       'B'    'import'   a
'A'       'C'    'import'   0
'B'       'A'    'export'   c
'B'       'C'    'export'   d
'C'       'A'    'export'   e

我想比较一个记者是另一个伙伴的那些行(一个元素是“导入”,另一个元素是“导出”),并通过对它们应用 function 将两行合并为一行。 例如:

def combine(a, b):
   if a['value']==0:
       return b
   if b['value']==0:
       return a
   if a['value'] == b['value']*(1.12):
       return a
   return b

如何找到 function 应该应用于pandas的那些行?

所需的 output 类似于:

Reporter  Partner  Element  Value
'A'       'B'    'import'   a+c
'A'       'C'    'import'   e
'C'       'B'    'import'   d

我不确定我是否完全理解您的问题,但您可以使用这种表示法b[a['value']==0]这将导致一列满足条件a['value']==0ba['value']==0

我想你可以做一个记者伙伴的联合索引:

df['Index'] = df[['Reporter', 'Partner']].apply(lambda x: '_'.join(sorted(x)), axis=1)

我们创建一个排序索引,其中 A 和 B,或 B 和 A 具有相同的值。 然后您可以应用groupby function 并进行进一步计算。

# 记者 伙伴 元素 价值 指数
0 一个 进口 一个 A_B
1 一个 C 进口 0 A_C
2 一个 出口 c A_B
3 出口 d B_B

填写免费询问更多,我很乐意提供帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM