I tried to takeout decimal values based on value present before decimal point .I have data frame like below,
JavaScript
x
20
20
1
data flow
2
1.5 parallel
3
1.2 parallel
4
1.3 parallel
5
2 sequence
6
2.5 parallel
7
2.4 parallel
8
2.8 parallel
9
3 sequence
10
3.2 parallel
11
3.1 parallel
12
3.5 parallel
13
4 sequence
14
4.1 parallel
15
4.5 parallel
16
4.3 parallel
17
1 sequence
18
5 sequence
19
6 sequence
20
Expected output,
JavaScript
1
20
20
1
data flow
2
1.5 Parallel1
3
1.2 Parallel1
4
1.3 Parallel1
5
2 sequence
6
2.5 Parallel2
7
2.4 Parallel2
8
2.8 Parallel2
9
3 sequence
10
3.2 Parallel3
11
3.1 Parallel3
12
3.5 Parallel3
13
4 sequence
14
4.1 Parallel4
15
4.5 Parallel4
16
4.3 Parallel4
17
1 sequence
18
5 sequence
19
6 sequence
20
How can i achieve this using pands,…
Advertisement
Answer
If data is a string:
JavaScript
1
3
1
df.loc[df['flow'].ne('sequence'), 'flow'] += df['data'].str.extract('(d+)',
2
expand=False)
3
if it is a float:
JavaScript
1
2
1
df.loc[df['flow'].ne('sequence'), 'flow'] += df['data'].astype(int).astype(str)
2
output:
JavaScript
1
20
20
1
data flow
2
0 1.5 parallel1
3
1 1.2 parallel1
4
2 1.3 parallel1
5
3 2.0 sequence
6
4 2.5 parallel2
7
5 2.4 parallel2
8
6 2.8 parallel2
9
7 3.0 sequence
10
8 3.2 parallel3
11
9 3.1 parallel3
12
10 3.5 parallel3
13
11 4.0 sequence
14
12 4.1 parallel4
15
13 4.5 parallel4
16
14 4.3 parallel4
17
15 1.0 sequence
18
16 5.0 sequence
19
17 6.0 sequence
20