python - 如何使用 python 和 pandas 计算数据框中的对
问题描述
我在excel中的数据是这样的。
fi 表示某些特征,IDi 表示客户 ID,数字表示某个特征出现的时间。
该矩阵应按以下方式解释: (f1,f2) 一起出现 3 次 (in ID2,ID3,ID4) (f2,f3) 一起出现 1 次 (in ID3) (f1,f4) 一起出现 3 次(在 ID1、ID2、ID3 中)等等
解决方案
import pandas as pd
df=pd.read_excel("data.xlsx")
print(df)
# convert to binary
df2=df
for i in range(4) :
for j in range(1,5) :
if df2.iloc[i,j] > 0 :
df2.iloc[i,j] = 1
print(df2)
ar=df2.iloc[:,1:].values # extract f1-f4 array values | ref#2
df3 = df2
df3.rename(columns = {'ID1':'f1','ID2':'f2','ID3':'f3','ID4':'f4'}, inplace = True ) # ref#1
for i in range(4) :
for j in range(1,5) :
if i == (j-1) :
df3.iloc[i,j] = 0
else :
df3.iloc[i,j] = sum(ar[i]*ar[j-1]) # found out that df*df didn't work.
print(df3)
dfa = dfb
是欺骗......它实际上就像一个指针,而不是变量。打印 df2 & df 你可以看到。df2=df
只是共享参考,而不是启动新变量。这就是为什么df = sum(df*df)
没有工作。
请试一试,如果它的工作/可以理解/不可以分享。
参考:
[1] https://www.geeksforgeeks.org/how-to-rename-columns-in-pandas-dataframe/
推荐阅读
- php - CI 3.0.1 到 CI 3.1.9 升级时出错?
- shell - 如何在linux中查找文件B中的某些特定行并将其合并到另一个文件A,条件是文件B中的行可以增加或减少
- php - nodeList 的 print_r 不起作用
- gtk - GtkTreeIter 指针失败
- android - 即使设置正确的意图过滤器,也会出现“未找到默认活动”
- c# - LINQ IN where 查询
- angular - 为什么 RXJS angular behaviorSubject 发出多个值
- angular - 更新到 Angular 6 [WDS] 加载后在 IE 上断开连接
- java - 在 Java Selenium 中移动鼠标后单击元素
- asp.net - 我的代码如图所示,我收到此错误“剩余文本似乎不是公式的一部分”>