Pandas
keyboard_arrow_down 655 guides
chevron_leftData Manipulation Cookbook
Adding a prefix to column valuesAdding leading zeros to strings of a columnAdding new column using listsAdding padding to a column of stringsBit-wise ORChanging column type to stringConditionally updating values of a DataFrameConverting all object-typed columns to categorical typeConverting column type to dateConverting column type to floatConverting column type to integerConverting K and M to numerical formConverting string categories or labels to numeric valuesEncoding categorical variablesExpanding lists vertically in a DataFrameExpanding strings vertically in a DataFrameExtracting numbers from columnFilling missing value in Index of DataFrameFiltering column values using boolean masksLogical AND operationMaking DataFrame string column lowercaseMapping True and False to 1 and 0 respectivelyMapping values of a DataFrame using a dictionaryModifying a single value in a DataFrameRemoving characters from columnsRemoving comma from column valuesRemoving first n characters from column valuesRemoving last n characters from column valuesRemoving leading substringRemoving trailing substringReplacing infinities with another value in DataFrameReplacing values in a DataFrameRounding valuesSorting categorical columnsUsing previous row to create new columns
check_circle
Mark as learned thumb_up
8
thumb_down
0
chat_bubble_outline
0
Comment auto_stories Bi-column layout
settings
Converting K and M to numerical form in Pandas DataFrame
schedule Aug 12, 2023
Last updated local_offer
Tags Python●Pandas
tocTable of Contents
expand_more Master the mathematics behind data science with 100+ top-tier guides
Start your free 7-days trial now!
Start your free 7-days trial now!
Consider the following DataFrame:
df
A0 20K1 2.5K2 30M3 3.5M4 500
Here, column A
is of type string.
Solution
To convert "K"
(thousand) and "M"
(million) to numerical form:
Explanation
We first use the replace(~)
method to replace K
and M
with *1e3
and *1e6
, respectively:
0 20*1e31 2.5*1e32 30*1e63 3.5*1e64 500Name: A, dtype: object
Note the following:
regex=True
is needed if we want the key string to be replaced by value string (e.g.K
replaced by"*1e3"
in this case)1e3
is the scientific notation of1000
.
Next, we mathematically evaluate each value using map(pd.eval)
:
Here, the Series' map(~)
method applies the pd.eval(~)
method to each of the values.
Finally, we convert all the values into integer using astype(int)
:
Published by Isshin Inada
Edited by 0 others
Did you find this page useful?
thumb_up
thumb_down
Comment
Citation
Ask a question or leave a feedback...
thumb_up
8
thumb_down
0
chat_bubble_outline
0
settings
Enjoy our search
Hit / to insta-search docs and recipes!