【问题标题】:Concatenate three Float64 variables into one variable将三个 Float64 变量连接成一个变量
【发布时间】:2018-10-21 15:44:24
【问题描述】:

我的 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

【问题讨论】:

    标签: python pandas string-concatenation


    【解决方案1】:

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

    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
    

    【讨论】:

    • 感谢您的解决方案,但是如何在您的代码中指定 3 个变量(v1、v2、v3),因为我正在处理整个数据集并且我需要再添加一列组合的 3 个变量?您的解决方案假定在我的数据框中我只有 3 个变量。
    • 你可以这样指定:df['concatenated'] = df[['v1','v2','v3']].astype(str).replace('nan','NaN').apply('_'.join,1)
    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多