【问题标题】:Combine value strings of two dataframes in corresponding locations within each dataframe在每个数据帧内的相应位置组合两个数据帧的值字符串
【发布时间】:2021-10-13 19:06:16
【问题描述】:

我正在寻找 python 代码来粘贴具有相同列名、维度和数据类型(字符串)的两个数据帧的值字符串。

我想通过将 DF1 和 DF2 的每个元素粘贴在一起来创建一个新的数据帧,这些元素位于每个数据帧内的相应位置,并且每个字符串之间有一个“,”分隔符。

Input dataframes (DF1 & DF2) and expected output

等效的 R 代码将使用矩阵:matrix(paste(DF1,DF2, sep=";"),nrow = nrow(DF1), dimnames=dimnames(DF1))

有没有办法用 python 做到这一点?看起来应该很简单,但在此先感谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用pd.concat:

    out = pd.concat([df1.stack(), df2.stack()], axis=1) \
            .apply(lambda x: ','.join(x), axis=1) \
            .unstack()
    

    输出:

    >>> out
         A    B    C
    0  z,f  x,h  c,j
    1  v,t  b,y  n,u
    2  a,u  s,i  d,o
    

    【讨论】:

    • @Delagator123。它解决了你的问题吗?
    • 谢谢!这运作良好。虽然@TMBailey df1 + "," + df2 似乎是最简单的方法。
    • 如果您喜欢这种方法,请随时接受他的回答。
    【解决方案2】:

    您可以直接将列添加在一起,并使用pd.concat 将它们收集到数据框中。

    import pandas as pd
    
    df1 = pd.DataFrame({"a": ["big", "small"], "b": ["good", "bad"]})
    df2 = pd.DataFrame({"a": ["shrimp", "lobster"], "b": ["will", "omen"]})
    
    pd.concat([df1[col] + "," + df2[col] for col in df1],
              axis="columns")
    
    #                a          b
    # 0     big,shrimp  good,will
    # 1  small,lobster   bad,omen
    

    编辑: 更好的是,您可以添加整个数据框。

    df1 + "," + df2
    #                a          b
    # 0     big,shrimp  good,will
    # 1  small,lobster   bad,omen
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多