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

时间:2018-10-21 15:44:25

标签: python pandas string-concatenation

我的df有很多变量,我只需要串联3个float变量:

    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

1 个答案:

答案 0 :(得分:1)

如果您的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