我在矩阵中转换列表时遇到了麻烦。
我的 np.array 是 :
import numpy as np
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"],
["2020-06-05", "awk"]])
在输出中,我想要一个新的矩阵,例如:
grep mkdir rm cat awk echo
2020-06-05 2 0 0 1 1 0
2020-06-06 1 1 1 0 0 0
2020-06-07 0 0 1 0 1 1
我尝试过Vstack,Hstack,但我不满意。 治疗后,我将使用 Matplotlib 库显示结果
你可以使用pd.crosstab
对 Pandas 执行此操作:
import numpy as np
import pandas as pd
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"],
["2020-06-05", "awk"]])
df = pd.crosstab(tab2D1[:, 0], tab2D1[:, 1])
print(df)
# col_0 awk cat echo grep mkdir rm
# row_0
# 2020-06-05 1 1 0 2 0 0
# 2020-06-06 0 0 0 1 1 1
# 2020-06-07 1 0 1 0 0 1
这对熊猫来说太简单了。
import numpy as np
import pandas as pd
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"],
["2020-06-05", "awk"]])
df = pd.crosstab(tab2D1[:, 0], tab2D1[:, 1])
print(df)
# col_0 awk cat echo grep mkdir rm
# row_0
# 2020-06-05 1 1 0 2 0 0
# 2020-06-06 0 0 0 1 1 1
# 2020-06-07 1 0 1 0 0 1
多谢。