gpt4 book ai didi

python - 取一列中的每个元素计算并使用python创建一个新列

转载 作者:行者123 更新时间:2023-11-28 22:21:24 25 4
gpt4 key购买 nike

我有一个如下所示的数据集;

ID val
1 3.1
2 2.7
3 6.3
4 1.3

并且想计算每行之间val的相似度,得到如下矩阵

ID val  c_1  c_2  c_3  c_4
1 3.1 0.0 0.4 -3.2 0.8
2 2.7 -0.4 0.0 -3.6 1.4
3 6.3 3.2 3.6 0.0 5.0
4 1.3 -0.8 -1.4 -5.0 0.0

我有以下代码:

def similarities(data):
j=0
k=0
for i in data:
data[j,k+2] = data[j+1] - data[j]
j=j+1
k=k+1
return None

目前这显然行不通,但这是否是尝试遍历数据集和使用索引的正确方法?

最佳答案

我想你需要np.subtract.outer , 创建新的 Dataframejoin转为原文:

df1=pd.DataFrame(np.subtract.outer(df['val'], df['val']), columns=df['ID']).add_prefix('c_')
df = df.join(df1)
print (df)
ID val c_1 c_2 c_3 c_4
0 1 3.1 0.0 0.4 -3.2 1.8
1 2 2.7 -0.4 0.0 -3.6 1.4
2 3 6.3 3.2 3.6 0.0 5.0
3 4 1.3 -1.8 -1.4 -5.0 0.0

另一种广播解决方案:

val = df.val.values
ids = df.ID.values

df1 = pd.DataFrame(val[:, None] - val, columns = ids).add_prefix('c_')
df = df.join(df1)
print (df)
ID val c_1 c_2 c_3 c_4
0 1 3.1 0.0 0.4 -3.2 1.8
1 2 2.7 -0.4 0.0 -3.6 1.4
2 3 6.3 3.2 3.6 0.0 5.0
3 4 1.3 -1.8 -1.4 -5.0 0.0

关于python - 取一列中的每个元素计算并使用python创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48343644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com