[英]How do I subtract two columns from the same array and put the value in their own single column array with numpy?
[英]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.