1

有没有办法将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

我想使用 python数据表而不是pandas/ dataframe

4

1 回答 1

0

正如@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]
"""

我必须说,之后删除重复的列真的很不简单......

于 2022-01-24T23:48:10.177 回答