有没有办法将Datatable中的行转换为 python 中的列?
例如-假设有一个如下所示的数据表
A 2
B 3
C 5
我想将其转换为
A B C
2 3 5
并将其与另一个看起来像的数据表合并
A X Y Z
2 5 0 3
这样最终的结果将是
A X Y Z B C
2 5 0 3 3 5
有没有办法将Datatable中的行转换为 python 中的列?
例如-假设有一个如下所示的数据表
A 2
B 3
C 5
我想将其转换为
A B C
2 3 5
并将其与另一个看起来像的数据表合并
A X Y Z
2 5 0 3
这样最终的结果将是
A X Y Z B C
2 5 0 3 3 5
正如@hrokr 之前评论的那样,数据表模块中还没有转置的实现。
此外,您无法转置由不同 dtypes(字符串和 int)组成的表,所以我假设它都是字符串。所以我建议使用 numpy 作为转置的中间体:
import datatable as dt
a = dt.Frame([["A", "B", "C"], ["2", "3", "5"]])
"""
| C0 C1
| str32 str32
-- + ----- -----
0 | A 2
1 | B 3
2 | C 5
[3 rows x 2 columns]
"""
b = dt.Frame([["A", "2"], ["X", "5"], ["Y", "0"], ["Z", "3"]])
"""
| C0 C1 C2 C3
| str32 str32 str32 str32
-- + ----- ----- ----- -----
0 | A X Y Z
1 | 2 5 0 3
[2 rows x 4 columns]
"""
a1 = a[0].to_numpy().T
a2 = a[1].to_numpy().T
c = dt.rbind(dt.Frame(a1), dt.Frame(a2))
"""
| C0 C1 C2 C3 C4 C5 C6
| str32 str32 str32 str32 str32 str32 str32
-- + ----- ----- ----- ----- ----- ----- -----
0 | A X Y Z A B C
1 | 2 5 0 3 2 3 5
"""
d = dt.cbind(b,c)
"""
| C0 C1 C2 C3 C4 C5 C6
| str32 str32 str32 str32 str32 str32 str32
-- + ----- ----- ----- ----- ----- ----- -----
0 | A X Y Z A B C
1 | 2 5 0 3 2 3 5
[2 rows x 7 columns]
"""
我必须说,之后删除重复的列真的很不简单......