逐个获取一个 df 列与另一个 df 列中所有值之间的绝对值差异,为 pandas 中的每个结果创建一个新列
Get absolute value difference between one df column one by one and all values in another df column, creating a new column for each result in pandas
这可能很简单,但我是新手,无法找到合适的搜索词。
我有两个数据框,示例如下。我想从 df2 中获取 col_add 中的所有值,并获取 df1 col_1 中所有值的绝对值差异,为每组结果添加一个新列。
df1 = pd.DataFrame({'col_1':[1,2,3], 'col_2':['d','e','f']})
df1
col_1 col_2
0 1 d
1 2 e
2 3 f
df2 = pd.DataFrame({'col_add':[4,2,1],})
df2
col_add
0 4
1 2
2 1
所需的结果如下所示:
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2
不确定是否有有效的方法来做到这一点?我想使用它的数据真实数据集有 100 到 500 行。任何帮助将不胜感激!
通过 Series.to_numpy
将列转换为 numpy 并广播到 2d array
,因此可以传递给新的 DataFrame
并添加到原始的:
arr = np.abs(df1['col_1'].to_numpy()[:, None] - df2['col_add'].to_numpy())
df = df1.join(pd.DataFrame(arr).add_prefix('res_'))
print (df)
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2
这可能很简单,但我是新手,无法找到合适的搜索词。
我有两个数据框,示例如下。我想从 df2 中获取 col_add 中的所有值,并获取 df1 col_1 中所有值的绝对值差异,为每组结果添加一个新列。
df1 = pd.DataFrame({'col_1':[1,2,3], 'col_2':['d','e','f']})
df1
col_1 col_2
0 1 d
1 2 e
2 3 f
df2 = pd.DataFrame({'col_add':[4,2,1],})
df2
col_add
0 4
1 2
2 1
所需的结果如下所示:
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2
不确定是否有有效的方法来做到这一点?我想使用它的数据真实数据集有 100 到 500 行。任何帮助将不胜感激!
通过 Series.to_numpy
将列转换为 numpy 并广播到 2d array
,因此可以传递给新的 DataFrame
并添加到原始的:
arr = np.abs(df1['col_1'].to_numpy()[:, None] - df2['col_add'].to_numpy())
df = df1.join(pd.DataFrame(arr).add_prefix('res_'))
print (df)
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2