我需要根据另一列值在我的数据框中创建新列。
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,否则不会发生变化。
答案 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
stack
和 groupby
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