如何创建一个包含行与列匹配的和积的新数据框?
How to create a new data frame containing the sum-product of matching rows to columns?
我有两个包含两种信息的数据框。第一个是物种偶然性 table 的站点,其中包含特定站点的特定物种计数:
> sp
Sp 1 Sp 2 Sp 3
Site 1 1 2 1
Site 2 0 0 1
Site 3 3 0 0
第二个是相同物种的数据框,但有一个二进制变量指示该物种是否具有特定属性:
> tr
Tr 1 Tr 2 Tr 3
Sp 1 1 0 0
Sp 2 0 1 0
Sp 3 0 1 1
所需的输出是一个包含站点的新数据框,以及二元特征变量的和乘积 * 该特定站点的物种频率,如下所示:
> fu
Tr 1 Tr 2 Tr 3
Site 1 1 3 1
Site 2 0 1 1
Site 3 3 0 0
如有任何帮助,我们将不胜感激!我已经坚持了几天了。
我尝试了一些东西,包括 pandas 中的 .mul 函数;然而,在多个属性之间匹配物种名称并生成总和已被证明是困难的。
这是重新创建上述数据的代码:
sp = pd.DataFrame({"SiteCode": ["Site 1", "Site 2", "Site 3"],
"Sp1": [1, 0, 3],
"Sp2": [2, 0, 0],
"Sp3": [1, 1, 0]})
print(sp)
tr = pd.DataFrame({"SpeciesCode": ["Sp1", "Sp2", "Sp3"],
"T1": [1, 0, 0],
"T2": [0, 1, 1],
"T3": [0, 0, 1]})
print(tr)
好的,让我们使用 set_index
和 dot
:
sp1 = sp.set_index('SiteCode')
tr1 = tr.set_index('SpeciesCode')
sp1.dot(tr1)
输出:
T1 T2 T3
SiteCode
Site 1 1 3 1
Site 2 0 1 1
Site 3 3 0 0
我有两个包含两种信息的数据框。第一个是物种偶然性 table 的站点,其中包含特定站点的特定物种计数:
> sp
Sp 1 Sp 2 Sp 3
Site 1 1 2 1
Site 2 0 0 1
Site 3 3 0 0
第二个是相同物种的数据框,但有一个二进制变量指示该物种是否具有特定属性:
> tr
Tr 1 Tr 2 Tr 3
Sp 1 1 0 0
Sp 2 0 1 0
Sp 3 0 1 1
所需的输出是一个包含站点的新数据框,以及二元特征变量的和乘积 * 该特定站点的物种频率,如下所示:
> fu
Tr 1 Tr 2 Tr 3
Site 1 1 3 1
Site 2 0 1 1
Site 3 3 0 0
如有任何帮助,我们将不胜感激!我已经坚持了几天了。
我尝试了一些东西,包括 pandas 中的 .mul 函数;然而,在多个属性之间匹配物种名称并生成总和已被证明是困难的。
这是重新创建上述数据的代码:
sp = pd.DataFrame({"SiteCode": ["Site 1", "Site 2", "Site 3"],
"Sp1": [1, 0, 3],
"Sp2": [2, 0, 0],
"Sp3": [1, 1, 0]})
print(sp)
tr = pd.DataFrame({"SpeciesCode": ["Sp1", "Sp2", "Sp3"],
"T1": [1, 0, 0],
"T2": [0, 1, 1],
"T3": [0, 0, 1]})
print(tr)
好的,让我们使用 set_index
和 dot
:
sp1 = sp.set_index('SiteCode')
tr1 = tr.set_index('SpeciesCode')
sp1.dot(tr1)
输出:
T1 T2 T3
SiteCode
Site 1 1 3 1
Site 2 0 1 1
Site 3 3 0 0