来自列 pandas 的两个条目 table
Two entry table from columns pandas
我正在尝试从我的 df
中的许多列中创建一个“双条目 table”。我尝试使用 pivot_table
/ crosstrab
/ groupby
但使用此函数的结果并不完整,因为不会是“两次输入 table”
例如,如果我有这样的数据框:
df
A B C D E
1 0 0 1 1
0 1 0 1 0
1 1 1 1 1
我想将我的 df 转换为可以被视为“双条目 table”的 df
A B C D E
A 2 1 1 2 2
B 1 2 1 2 1
C 1 1 1 1 1
D 2 2 1 3 1
E 2 1 1 1 2
所以如果我应该解释第一行,因为 A 在他的列中有两个 1,然后 A-A = 2,A-B = 1 因为他们在 df
的第三行级别共享一个,A-C = 1 因为 df
中的第三行他们在同一行级别共享一个,最后 A-E = 2 因为他们在 df
的第一行和第三行共享一个
将pd.DataFrame.dot
与T
一起使用:
df.T.dot(df) # or df.T@df
输出:
A B C D E
A 2 1 1 2 2
B 1 2 1 2 1
C 1 1 1 1 1
D 2 2 1 3 2
E 2 1 1 2 2
我正在尝试从我的 df
中的许多列中创建一个“双条目 table”。我尝试使用 pivot_table
/ crosstrab
/ groupby
但使用此函数的结果并不完整,因为不会是“两次输入 table”
例如,如果我有这样的数据框:
df
A B C D E
1 0 0 1 1
0 1 0 1 0
1 1 1 1 1
我想将我的 df 转换为可以被视为“双条目 table”的 df
A B C D E
A 2 1 1 2 2
B 1 2 1 2 1
C 1 1 1 1 1
D 2 2 1 3 1
E 2 1 1 1 2
所以如果我应该解释第一行,因为 A 在他的列中有两个 1,然后 A-A = 2,A-B = 1 因为他们在 df
的第三行级别共享一个,A-C = 1 因为 df
中的第三行他们在同一行级别共享一个,最后 A-E = 2 因为他们在 df
将pd.DataFrame.dot
与T
一起使用:
df.T.dot(df) # or df.T@df
输出:
A B C D E
A 2 1 1 2 2
B 1 2 1 2 1
C 1 1 1 1 1
D 2 2 1 3 2
E 2 1 1 2 2