Rows2Columnar¶
- class torchdata.datapipes.iter.Rows2Columnar(source_datapipe: IterDataPipe[List[Union[Dict, List]]], column_names: Optional[List[str]] = None)¶
接受一个包含数据批次的输入 DataPipe,并一次处理一个批次,并为每个批次生成一个 Dict,其中
column_names
作为键,每行对应值的列表作为值(函数名:rows2columnar
)。在输入 DataPipe 中,每个批次中的每行必须是 Dict 或 List
注意
如果未给出
column_names
并且每行都是 Dict,则该 Dict 的键将用作列名。- 参数:
source_datapipe – 一个 DataPipe,其中每个项目都是一个批次。在每个批次中,都有行,每行都是 List 或 Dict
column_names – 如果批次中的每个元素包含 Dict,则
column_names
充当匹配键的过滤器;否则,这些将用作为每个批次生成的 Dict 的键
示例
>>> # Each element in a batch is a `Dict` >>> from torchdata.datapipes.iter import IterableWrapper >>> dp = IterableWrapper([[{'a': 1}, {'b': 2, 'a': 1}], [{'a': 1, 'b': 200}, {'b': 2, 'c': 3, 'a': 100}]]) >>> row2col_dp = dp.rows2columnar() >>> list(row2col_dp) [defaultdict(<class 'list'>, {'a': [1, 1], 'b': [2]}), defaultdict(<class 'list'>, {'a': [1, 100], 'b': [200, 2], 'c': [3]})] >>> row2col_dp = dp.rows2columnar(column_names=['a']) >>> list(row2col_dp) [defaultdict(<class 'list'>, {'a': [1, 1]}), defaultdict(<class 'list'>, {'a': [1, 100]})] >>> # Each element in a batch is a `List` >>> dp = IterableWrapper([[[0, 1, 2, 3], [4, 5, 6, 7]]]) >>> row2col_dp = dp.rows2columnar(column_names=["1st_in_batch", "2nd_in_batch", "3rd_in_batch", "4th_in_batch"]) >>> list(row2col_dp) [defaultdict(<class 'list'>, {'1st_in_batch': [0, 4], '2nd_in_batch': [1, 5], '3rd_in_batch': [2, 6], '4th_in_batch': [3, 7]})]