繁体   English   中英

仅当另一列具有相同的值时,如何减去具有不同长度的两列

[英]How to subtract two columns with different length only if other column has the same value

我有两个df。

df1 有两列,第一列是标识符,第二列是值。 df 的总长度为 1071。

df2 有多个列,但也有一列作为标识符,另一列作为值。 df2 的总长度为 500000。

我想编写一个程序,在 df2 中创建一个新列,在每条记录中我都有 df2['value']-df['value] if df2['identifier']==df1['identifier'] 的结果. 我有这个,但我知道这没有意义:

if df1['identifier'] == df2['identifier']:
    df2['new_value']= df2['value']-df1['value']
else:
    pass

我收到以下错误:ValueError:只能比较标签相同的系列对象。

提前致谢

像这样的东西对你有用吗?

df2 = df2.merge(df1, how="outer", on="identifier")
df2["new_value"] = df2["value_y"] - df2["value_x"]

首先,将identifier列上的两个数据集合并,然后相减。 如果df1中不存在标识符,则返回NaN

请试试这个:

import numpy as np
import pandas as pd
df2['new_value']= np.nan
identifiers = df2['identifier'].unique()
for identifier in identifiers:
    if identifier in df1.identifier.values:
        df2.loc[df2['identifier']==identifier,'new_value'] = df2.loc[df2['identifier']==identifier]['value'].iloc[0]-df1.loc[df1['identifier']==identifier]['value'].iloc[0]

如果对于标识符,这适用于 dataframe 中存在唯一值

暂无
暂无

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

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