如何拆分熊猫列并检查值?

时间:2021-06-09 10:59:41

标签: python pandas

我需要根据另一列值在我的数据框中创建新列。

df:

  Id    Value
  0     L+N
  1     L+P+N
  2     L
  3     L+L+L
  4     G+G
  5     L+N

df_输出:

  Id    Value   Value2
  0     L+N     L+N
  1     L+P+N   L+P+N
  2     L       L
  3     L+L+L   L
  4     G+G     G
  5     L+N     L+N

如果 Value 列包含相同的字母 L+L+L,则 Value2 将是 L,否则不会发生变化。

3 个答案:

答案 0 :(得分:2)

您可以使用str.split()将项目拆分为一个列表,通过pd.unique找到列表中唯一的元素,然后通过.str.join将项目连接回来,如下所示:

df['Value2'] = df['Value'].str.split('+').map(pd.unique).str.join('+')

结果:

print(df)

    Id  Value Value2
0   0    L+N    L+N
1   1  L+P+N  L+P+N
2   2      L      L
3   3  L+L+L      L
4   4    G+G      G
5   5    L+N    L+N

答案 1 :(得分:1)

数据框:

    Value
0   L+L+L
1   L+G

df["Value2"] = df["Value"].str.split("+").apply(lambda x: x[0] if len(set(x)) ==1
                                                else "+".join(x) )

输出:

    Value   Value2
0   L+L+L   L
1   L+G     L+G

答案 2 :(得分:1)

尝试 str.split stackgroupby unique 来获取唯一值。

df['col2'] = df['Value'].str.split('+',expand=True).stack()\
                       .groupby(level=0).agg('unique').agg('+'.join)

   Id  Value   col2
0   0    L+N    L+N
1   1  L+P+N  L+P+N
2   2      L      L
3   3  L+L+L      L
4   4    G+G      G
5   5    L+N    L+N