Yirmidokuz
Yirmidokuz

Reputation: 127

How can I match the value of a column on another column to take the value from another column?

My data frame looks as following

    time    Weg     Kraft   Adj_Zug_Time    eps     time2   
0   0.02    -0.02771    28.3    1.12          0     0               
1   0.04    -0.0269     28.3    1.14    0.00018772  0.1     
2   0.06    -0.02608    21.2    1.16    0.00015665  0.2     
3   0.08    -0.02527    21.2    1.18    0.00018191  0.3     
4   0.1     -0.02443    28.3    1.2     0.00018107  0.4     
5   0.12    -0.02362    28.3    1.22    0.0001619   0.5     
6   0.14    -0.02277    28.3    1.24    0.00015181  0.6     
7   0.16    -0.02193    28.3    1.26    0.00013562  0.7     
8   0.18    -0.0211     28.3    1.28    0.00015082  0.8     
9   0.2     -0.02028    28.3    1.3     0.00016073  0.9     
10  0.22    -0.01945    28.3    1.32    0.00012887  1   
11  0.24    -0.01862    21.2    1.34    0.00017036  1.1     
12  0.26    -0.01776    35.3    1.36    0.00013887  1.2     
13  0.28    -0.01689    28.3    1.38    0.00013914  1.3     
14  0.3     -0.01605    28.3    1.4     0.0001629   1.4     
15  0.32    -0.01518    35.3    1.42    0.00017935  1.5     
16  0.34    -0.01434    42.4    1.44    0.00022273  1.6     
17  0.36    -0.01351    35.3    1.46    0.00021165  1.7     
18  0.38    -0.01265    35.3    1.48    0.00025136  1.8     
19  0.4     -0.0118     28.3    1.5     0.00027536  1.9     
20  0.42    -0.01097    49.4    1.52    0.00029486  2       
21  0.44    -0.01011    35.3    1.54    0.00031133  2.1     
22  0.46    -0.00928    42.4    1.56    0.00033505  2.2     
23  0.48    -0.00846    49.4    1.58    0.00036787  2.3     
24  0.5     -0.00761    42.4    1.6     0.00037578  2.4     
25  0.52    -0.0068     42.4    1.62    0.00040227  2.5     
26  0.54    -0.00598    42.4    1.64    0.00043238  2.6     
27  0.56    -0.00517    35.3    1.66    0.00044347  2.7     
28  0.58    -0.00431    49.4    1.68    0.00044462  2.8     
29  0.6     -0.00352    49.4    1.7     0.00048994  2.9     
30  0.62    -0.00269    49.4    1.72    0.00050601  3       
31  0.64    -0.00187    42.4    1.74    0.00053589  3.1     
32  0.66    -0.00102    49.4    1.76    0.00054206  3.2     
33  0.68    -0.00018    49.4    1.78    0.00057367  3.3     
34  0.7     0.00065     49.4    1.8     0.0005971   3.4     
35  0.72    0.00149     49.4    1.82    0.00060671  3.5     
36  0.74    0.00228     56.5    1.84    0.00060161  3.6     

I want to create a new column called Stress which will take the values from the Kraft column which its Adj_Zug_time values will match with time2 values.

Desired output would be as following:

        time    Weg     Kraft   Adj_Zug_Time    eps     time2 Spannung_02
0   0.02    -0.02771    28.3    1.12             0          0       🔴
1   0.04    -0.0269     28.3    1.14    0.00018772          0.1     🔴
2   0.06    -0.02608    21.2    1.16    0.00015665          0.2     🔴
3   0.08    -0.02527    21.2    1.18    0.00018191          0.3     🔴
4   0.1     -0.02443    28.3    1.2     0.00018107          0.4     🔴
5   0.12    -0.02362    28.3    1.22    0.0001619           0.5     🔴
6   0.14    -0.02277    28.3    1.24    0.00015181          0.6     🔴
7   0.16    -0.02193    28.3    1.26    0.00013562          0.7     🔴
8   0.18    -0.0211     28.3    1.28    0.00015082          0.8     🔴
9   0.2     -0.02028    28.3    1.3     0.00016073          0.9     🔴
10  0.22    -0.01945    28.3    1.32    0.00012887           1      🔴
11  0.24    -0.01862    21.2    1.34    0.00017036           1.1    🔴
12  0.26    -0.01776    35.3    1.36    0.00013887           1.2    28.3
13  0.28    -0.01689    28.3    1.38    0.00013914           1.3    28.3
14  0.3     -0.01605    28.3    1.4     0.0001629            1.4    28.3
15  0.32    -0.01518    35.3    1.42    0.00017935           1.5    28.3
16  0.34    -0.01434    42.4    1.44    0.00022273           1.6    42.4
17  0.36    -0.01351    35.3    1.46    0.00021165           1.7    49.4
18  0.38    -0.01265    35.3    1.48    0.00025136           1.8    49.4
19  0.4     -0.0118     28.3    1.5     0.00027536           1.9    🔴
20  0.42    -0.01097    49.4    1.52    0.00029486           2      🔴
21  0.44    -0.01011    35.3    1.54    0.00031133           2.1    🔴
22  0.46    -0.00928    42.4    1.56    0.00033505           2.2    🔴
23  0.48    -0.00846    49.4    1.58    0.00036787           2.3    🔴
24  0.5     -0.00761    42.4    1.6     0.00037578           2.4    🔴
25  0.52    -0.0068     42.4    1.62    0.00040227           2.5    🔴
26  0.54    -0.00598    42.4    1.64    0.00043238           2.6    🔴
27  0.56    -0.00517    35.3    1.66    0.00044347           2.7    🔴
28  0.58    -0.00431    49.4    1.68    0.00044462           2.8    🔴
29  0.6     -0.00352    49.4    1.7     0.00048994           2.9    🔴
30  0.62    -0.00269    49.4    1.72    0.00050601           3      🔴
31  0.64    -0.00187    42.4    1.74    0.00053589           3.1    🔴
32  0.66    -0.00102    49.4    1.76    0.00054206           3.2    🔴
33  0.68    -0.00018    49.4    1.78    0.00057367           3.3    🔴
34  0.7     0.00065     49.4    1.8     0.0005971            3.4    🔴
35  0.72    0.00149     49.4    1.82    0.00060671           3.5    🔴
36  0.74    0.00228     56.5    1.84    0.00060161           3.6    🔴

In excel I would use index-match for this.

How is it done with Pandas ?

Upvotes: 0

Views: 83

Answers (1)

sammywemmy
sammywemmy

Reputation: 28669

See if this helps; primarily uses merge:

It looks for rows where Adj_Zug_Time matches time2. note the how='right; this means the right column determines how the results are returned.

result = pd.merge(
    df.Kraft,
    df.time2,
    left_on=df.Adj_Zug_Time,
    right_on=df.time2,
    how="right",
).Kraft

df.assign(Stress=result)

    time    Weg     Kraft   Adj_Zug_Time    eps     time2   Stress
0   0.02    -0.02771    28.3    1.12    0.000000    0.0     NaN
1   0.04    -0.02690    28.3    1.14    0.000188    0.1     NaN
2   0.06    -0.02608    21.2    1.16    0.000157    0.2     NaN
3   0.08    -0.02527    21.2    1.18    0.000182    0.3     NaN
4   0.10    -0.02443    28.3    1.20    0.000181    0.4     NaN
5   0.12    -0.02362    28.3    1.22    0.000162    0.5     NaN
6   0.14    -0.02277    28.3    1.24    0.000152    0.6     NaN
7   0.16    -0.02193    28.3    1.26    0.000136    0.7     NaN
8   0.18    -0.02110    28.3    1.28    0.000151    0.8     NaN
9   0.20    -0.02028    28.3    1.30    0.000161    0.9     NaN
10  0.22    -0.01945    28.3    1.32    0.000129    1.0     NaN
11  0.24    -0.01862    21.2    1.34    0.000170    1.1     NaN
12  0.26    -0.01776    35.3    1.36    0.000139    1.2     28.3
13  0.28    -0.01689    28.3    1.38    0.000139    1.3     28.3
14  0.30    -0.01605    28.3    1.40    0.000163    1.4     28.3
15  0.32    -0.01518    35.3    1.42    0.000179    1.5     28.3
16  0.34    -0.01434    42.4    1.44    0.000223    1.6     42.4
17  0.36    -0.01351    35.3    1.46    0.000212    1.7     49.4
18  0.38    -0.01265    35.3    1.48    0.000251    1.8     49.4
19  0.40    -0.01180    28.3    1.50    0.000275    1.9     NaN
20  0.42    -0.01097    49.4    1.52    0.000295    2.0     NaN
21  0.44    -0.01011    35.3    1.54    0.000311    2.1     NaN
22  0.46    -0.00928    42.4    1.56    0.000335    2.2     NaN
23  0.48    -0.00846    49.4    1.58    0.000368    2.3     NaN
24  0.50    -0.00761    42.4    1.60    0.000376    2.4     NaN
25  0.52    -0.00680    42.4    1.62    0.000402    2.5     NaN
26  0.54    -0.00598    42.4    1.64    0.000432    2.6     NaN
27  0.56    -0.00517    35.3    1.66    0.000443    2.7     NaN
28  0.58    -0.00431    49.4    1.68    0.000445    2.8     NaN
29  0.60    -0.00352    49.4    1.70    0.000490    2.9     NaN
30  0.62    -0.00269    49.4    1.72    0.000506    3.0     NaN
31  0.64    -0.00187    42.4    1.74    0.000536    3.1     NaN
32  0.66    -0.00102    49.4    1.76    0.000542    3.2     NaN
33  0.68    -0.00018    49.4    1.78    0.000574    3.3     NaN
34  0.70    0.00065     49.4    1.80    0.000597    3.4     NaN
35  0.72    0.00149     49.4    1.82    0.000607    3.5     NaN
36  0.74    0.00228     56.5    1.84    0.000602    3.6     NaN

Upvotes: 1

Related Questions