Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

In my column of the data frame i have version numbers like 6.3.5, 1.8, 5.10.0 saved as objects and thus likely as Strings. I want to remove the dots with nothing so i get 635, 18, 5100. My code idea was this:

for row in dataset.ver:
    row.replace(".","",inplace=True)

The thing is it works if I don't set inplace to True, but we want to overwrite it and safe it.

Please show a sample of your dataframe, it helps very much to come up with a solution. Furthermore it's best to use vectorized operations, not a for loop like you're maybe used to in pure python. A vectorized solution in pandas would be for example be like this: dataset['ver'].replace("[.]","", inplace=True, regex=True). – Sander van den Oord Dec 5, 2018 at 14:42

You're iterating through the elements within the DataFrame, in which case I'm assuming it's type str (or being coerced to str when you replace). str.replace doesn't have an argument for inplace=....

You should be doing this instead:

dataset['ver'] = dataset['ver'].str.replace('.', '')

Sander van den Oord in the comments is quite correct to point out:

dataset['ver'].replace("[.]","", inplace=True, regex=True)

This is the way we do operations on a column in Pandas because in general, Pandas tries to optimize over for loops. The Pandas developers consider for loops the among least desirable pattern for row-wise operations in Python (see here.)

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.