MCPcopy
hub / github.com/pandas-dev/pandas / _prepare_value_labels

Method _prepare_value_labels

pandas/io/stata.py:593–629  ·  view source on GitHub ↗

Encode value labels.

(self)

Source from the content-addressed store, hash-verified

591 self._prepare_value_labels()
592
593 def _prepare_value_labels(self) -> None:
594 """Encode value labels."""
595
596 self.text_len = 0
597 self.txt: list[bytes] = []
598 self.n = 0
599 # Offsets (length of categories), converted to int32
600 self.off = np.array([], dtype=np.int32)
601 # Values, converted to int32
602 self.val = np.array([], dtype=np.int32)
603 self.len = 0
604
605 # Compute lengths and setup lists of offsets and labels
606 offsets: list[int] = []
607 values: list[float] = []
608 for vl in self.value_labels:
609 category: str | bytes = vl[1]
610 if not isinstance(category, str):
611 category = str(category)
612 warnings.warn(
613 value_label_mismatch_doc.format(self.labname),
614 ValueLabelTypeMismatch,
615 stacklevel=find_stack_level(),
616 )
617 category = category.encode(self._encoding)
618 offsets.append(self.text_len)
619 self.text_len += len(category) + 1 # +1 for the padding
620 values.append(vl[0])
621 self.txt.append(category)
622 self.n += 1
623
624 # Ensure int32
625 self.off = np.array(offsets, dtype=np.int32)
626 self.val = np.array(values, dtype=np.int32)
627
628 # Total length
629 self.len = 4 + 4 + 4 * self.n + 4 * self.n + self.text_len
630
631 def generate_value_label(self, byteorder: str) -> bytes:
632 """

Callers 2

__init__Method · 0.95
__init__Method · 0.80

Calls 5

find_stack_levelFunction · 0.90
encodeMethod · 0.80
arrayMethod · 0.45
formatMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected