【问题标题】:Python: Concatenating Strings from Grouped analysisPython:从分组分析中连接字符串
【发布时间】:2022-06-22 16:47:45
【问题描述】:

我需要一些帮助来连接来自 DF 的一些字符串。

我有以下“原始”df:

df = pd.DataFrame({'Material': [1,1,1,2,2,2,3,3,3,3],
                'BOM': ['A','B',np.nan,'A',np.nan,'C','A','A','B','C']})
Material BOM
0 1 A
1 1 B
2 1 NaN
3 2 A
4 2 NaN
5 2 C
6 3 A
7 3 A
8 3 B
9 3 C

预期结果是:

Material BOM
1 A, B
2 A, C
3 A, B, C

我是 Python 新手,正在考虑将 Loop 和 Dict 混合使用,但我绝对认为一定有更好的方法。

棘手的一点是,我认为我需要按材料分组并检查“BOM”列以获取不同的选项(不同于 NaN)然后某种“,”。加入它们。

我尝试了以下方法:

df.groupby('Material')['BOM'].apply(', '.join)

并得到错误:“TypeError: sequence item 2: expected str instance, float found”

如果有人能帮助我,我将不胜感激

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以dropnadrop_duplicates,然后GroupBy.agg

    df.dropna().drop_duplicates().groupby('Material').agg(', '.join)
    

    或:

    df.dropna().groupby('Material').agg(lambda s: ', '.join(s.drop_duplicates()))
    

    输出:

                  BOM
    Material         
    1            A, B
    2            A, C
    3         A, B, C
    

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2017-06-16
      • 2019-01-24
      相关资源
      最近更新 更多