I have a dataframe that instead of .
it has ,
and separators of numbers are also comma,
I need to replace only odd comma to dot.
The dataframe is very big but as an example,
I have this:
+---+-----------------+ |id |values | +---+-----------------+ | 1 | 12,3,10,4,11,5 | +---+-----------------+
I want this df:
+---+-----------------+ |id |values | +---+-----------------+ | 1 | 12.3,10.4,11.5 | +---+-----------------+
Advertisement
Answer
You can split on all commas ,
and later you can use for
-loop:
- with
range(0, len(splitted_data), 2)
to create pairs[0:2]
,[2:4]
, …,[n:n+2]
and join them to strings with dots:
data = '12,3,10,4,11,5' splitted_data = data.split(',') new_values = [] for n in range(0, len(splitted_data), 2): pair = splitted_data[n:n+2] text = '.'.join(pair) new_values.append(text) print(text) # -- after loop --- data = ','.join(new_values) print(data)
- with
iter()
withzip()
to create pairs and join them to strings with dots:
data = '12,3,10,4,11,5' splitted_data = data.split(',') iterator = iter(splitted_data) new_values = [] for pair in zip(iterator, iterator): text = '.'.join(pair) new_values.append(text) print(text) # -- after loop --- data = ','.join(new_values) print(data)
Result:
12.3 10.4 11.5 12.3,10.4,11.5
EDIT:
You may also use regex
for this
import re data = '12,3,10,4,11,5' print(re.sub('(d+),(d+)', '\1.\2', data))
Result:
12.3,10.4,11.5