我知道如何在R中这样做.但是,pandas中是否有任何函数将数据帧转换为包含两个方面共同计数的nxn共生矩阵.
例如矩阵df:
import pandas as pd
df = pd.DataFrame({'TFD' : ['AA', 'SL', 'BB', 'D0', 'Dk', 'FF'],
'Snack' : ['1', '0', '1', '1', '0', '0'],
'Trans' : ['1', '1', '1', '0', '0', '1'],
'Dop' : ['1', '0', '1', '0', '1', '1']}).set_index('TFD')
print df
>>>
Dop Snack Trans
TFD
AA 1 1 1
SL 0 0 1
BB 1 1 1
D0 0 1 0
Dk 1 0 0
FF 1 0 1
[6 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)
会屈服:
Dop …Run Code Online (Sandbox Code Playgroud) 它说,在文档上
NDFrame的Numpy表示 - 来源
"NDFrame的Numpy表示"是什么意思?修改这个numpy表示会影响我的原始数据帧吗?换句话说,会.values返回副本还是视图?
StackOverflow中有问题的答案隐含地建议(依赖)返回视图.例如,在pandas.DataFrame的对角线上的Set值的接受答案中,np.fill_diagonal(df.values, 0)用于将对角线部分的所有值设置df为0.这是在这种情况下返回的视图.但是,如@coldspeed的回答所示,有时会返回副本.
这感觉非常基本.这对我来说有点奇怪,因为我没有更详细的资料来源.values.
另一个实验除了@ coldspeed的回答中的当前实验之外还返回一个视图:
df = pd.DataFrame([["A", "B"],["C", "D"]])
df.values[0][0] = 0
Run Code Online (Sandbox Code Playgroud)
我们得到了
df
0 1
0 0 B
1 C D
Run Code Online (Sandbox Code Playgroud)
即使它现在是混合型,我们仍然可以df通过设置修改原件df.values
df.values[0][1] = 5
df
0 1
0 0 5
1 C D
Run Code Online (Sandbox Code Playgroud)