将三个 Float64 变量连接成一个变量

Concatenate three Float64 variables into one variable

我的 df 有很多变量,我只需要连接其中的 3 个浮点变量:

    v1  v2  v3
0   2.0 NaN 1.0
1   1.0 1.0 1.0
2   NaN NaN 2.0
3   NaN NaN NaN
4   NaN NaN 2.0

df.dtypes()

v1          float64
v2          float64
v3          float64
dtype: object

我需要将所有 3 个变量连接成 df['concatenated'] 并得到这些结果:

    v1  v2  v3  concatenated
0   2.0 NaN 1.0 2.0_NaN_1.0
1   1.0 1.0 1.0 1.0_1.0_1.0
2   NaN NaN 2.0 NaN_NaN_2.0
3   NaN NaN NaN NaN_NaN_NaN
4   NaN NaN 2.0 NaN_NaN_2.0

如果 NaN 的大小写无关紧要,这就足够了:

df['concatenated'] = df.astype(str).apply('_'.join,1)
>>> df
    v1   v2   v3 concatenated
0  2.0  NaN  1.0  2.0_nan_1.0
1  1.0  1.0  1.0  1.0_1.0_1.0
2  NaN  NaN  2.0  nan_nan_2.0
3  NaN  NaN  NaN  nan_nan_nan
4  NaN  NaN  2.0  nan_nan_2.0

如果大小写很重要,那么你必须事先使用replace

df['concatenated'] = df.astype(str).replace('nan','NaN').apply('_'.join,1)
>>> df
    v1   v2   v3 concatenated
0  2.0  NaN  1.0  2.0_NaN_1.0
1  1.0  1.0  1.0  1.0_1.0_1.0
2  NaN  NaN  2.0  NaN_NaN_2.0
3  NaN  NaN  NaN  NaN_NaN_NaN
4  NaN  NaN  2.0  NaN_NaN_2.0