[英]Using a shift() function within an apply function to compare rows in a Pandas Dataframe
[英]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']==0
的b
值a['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.