(df: pd.DataFrame, stacklevel: int = 1)
| 299 | |
| 300 | |
| 301 | def _validate_dataframe(df: pd.DataFrame, stacklevel: int = 1) -> None: |
| 302 | for pseudocolumn in api.PANDAS_PSEUDOCOLUMNS: |
| 303 | if pseudocolumn in df.columns: |
| 304 | if not pd.api.types.is_integer_dtype(df[pseudocolumn].dtype): |
| 305 | raise ValueError(f"Column {pseudocolumn} has to contain integers only.") |
| 306 | if api.TIME_PSEUDOCOLUMN in df.columns: |
| 307 | if any(df[api.TIME_PSEUDOCOLUMN] < 0): |
| 308 | raise ValueError( |
| 309 | f"Column {api.TIME_PSEUDOCOLUMN} cannot contain negative times." |
| 310 | ) |
| 311 | if any(df[api.TIME_PSEUDOCOLUMN] % 2 == 1): |
| 312 | warn( |
| 313 | "timestamps are required to be even; all timestamps will be doubled", |
| 314 | stacklevel=stacklevel + 1, |
| 315 | ) |
| 316 | df[api.TIME_PSEUDOCOLUMN] = 2 * df[api.TIME_PSEUDOCOLUMN] |
| 317 | |
| 318 | if api.DIFF_PSEUDOCOLUMN in df.columns: |
| 319 | if any((df[api.DIFF_PSEUDOCOLUMN] != 1) & (df[api.DIFF_PSEUDOCOLUMN] != -1)): |
| 320 | raise ValueError( |
| 321 | f"Column {api.DIFF_PSEUDOCOLUMN} can only have 1 and -1 values." |
| 322 | ) |
| 323 | |
| 324 | |
| 325 | @check_arg_types |
no test coverage detected