If pandas shows a money column as dates, it usually did not recognize currency on its own: trace an explicit date-parsing option or a later conversion such as pd.to_datetime. Then keep the input as text, normalize its currency and number formatting for the file’s locale, and test the resulting values—not just whether the code runs.
Why a money column can become dates
In pandas 3.0.5, read_csv does not ordinarily turn date-looking columns into datetimes by default. Its documentation says: “By default, columns with dates will be read as object rather than datetime.” Date parsing is controlled explicitly with options such as parse_dates and date_format. A column that cannot be represented as datetimes may also be returned unchanged as object. pandas read_csv documentation
As an Amazon Associate I earn from qualifying purchases.
Look beyond CSV loading for the step that changed the values. Common places to inspect are an explicit date-parsing configuration, a converter, a later assignment to the column, or a call to pd.to_datetime.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Numbers sent to to_datetime are interpreted as time offsets
In pandas 3.0.6, numeric inputs to to_datetime are interpreted as units from an origin. The defaults are unit='ns' and origin='unix'. Those settings make sense for numeric timestamps only when the values really are offsets from the chosen origin; a monetary amount is not a timestamp simply because it is an integer. pandas to_datetime documentation
#1 Best Overall
How to find the conversion that changed the column
- Inspect the source: check the CSV header and the raw values in the money column before pandas processes them. Note currency symbols, thousands separators, decimal marks, blanks, and unusual entries.
- Trace the data path: search the code that loads and transforms the file for
parse_dates,date_format,converters,dtype,pd.to_datetime, and assignments that replace the column. - Check any numeric date conversion: if values reach
to_datetime, verify that they are genuinely epoch offsets and that the intended unit and origin are explicit. If they represent money, remove the date conversion. - Compare before and after: inspect a few raw values alongside their converted results. Count missing values before and after each conversion so a successful return does not conceal lost entries.
Read and convert money deliberately
Keep the source field as text during ingestion, or declare a deliberate dtype, then normalize it according to the actual file’s currency and locale before converting it to numbers. For example, a comma may be a thousands separator in one file and a decimal mark in another; cleanup that assumes the wrong convention can corrupt amounts just as surely as date parsing can.
When the date format is known, the pandas IO guide recommends specifying date_format for date columns. For genuinely mixed date strings it documents format='mixed', while warning that this is risky. Those date-parsing options are for date fields; they are not a way to interpret monetary text. The same guide shows that numeric conversion can map invalid input to NaN, so decide how invalid money values should be handled rather than letting coercion pass unnoticed. pandas IO tools guide
Rank #2
Mixed values can also lead to an object column. pandas’ DtypeWarning documentation recommends specifying dtype as one way to avoid ambiguous inference. An object dtype by itself does not establish that values are correct or consistently numeric. pandas DtypeWarning documentation
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallWhy 123 passing tests do not prove the amounts are right
The count alone cannot show what the tests covered. Without the code, input file, and test suite, it is not possible to tell whether those 123 tests exercised this column, realistic CSV formatting, or the final monetary values. A test can pass while checking only that a function returned or that a column exists.
Make the ingestion test assert the meaning of the result:
- Use representative input strings from the real file, including relevant currency marks, separators, decimals, blanks, and invalid entries.
- Compare the parsed values with explicit expected amounts, not just the number of rows or the presence of a column.
- Assert the expected output dtype.
- Check the number of missing or coerced values and make sure it matches the expected behavior.
- Include domain invariants where appropriate, such as a known total or a rule that amounts cannot be negative.
pandas provides assert_series_equal and assert_frame_equal for comparing actual and expected series or data frames. Use them to catch changes in values and dtype as well as differences in structure. pandas assert_series_equal documentation
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches




