Python 如何基于另一列连接dataframe中某列的唯一字符串
我需要根据另一列的值在一列中连接唯一的字符串 我试过groupby,但要么是我错过了一些明显的东西,要么是杀伤力过大 下面是输入数据帧。对于Python 如何基于另一列连接dataframe中某列的唯一字符串,python,pandas,Python,Pandas,我需要根据另一列的值在一列中连接唯一的字符串 我试过groupby,但要么是我错过了一些明显的东西,要么是杀伤力过大 下面是输入数据帧。对于col1 df = pd.DataFrame([ ['a', '', 1], ['a', 's2', 2], ['a', 's2', 3], ['a', 's3', 3], ['b', '', 4], ['b', 's1', 5], ['c', '', 6]], columns=['col1', '
col1
df = pd.DataFrame([
['a', '', 1],
['a', 's2', 2],
['a', 's2', 3],
['a', 's3', 3],
['b', '', 4],
['b', 's1', 5],
['c', '', 6]],
columns=['col1', 'col2', 'col0'])
我正在寻找这样的输出:
df2 = pd.DataFrame([
['a', '', 1, 's2;s3'],
['a', 's2', 2, 's2;s3'],
['a', 's2', 3, 's2;s3'],
['a', 's3', 3, 's2;s3'],
['b', '', 4, 's1'],
['b', 's1', 5, 's1'],
['c', '', 6, '']],
columns=['col1', 'col2', 'col0', 'col_out'])
我尝试使用transform,但没有一个提供正确的列。我不拘泥于groupby、transform,只要工作正常,任何其他方法都可以
df['col3'] = df.groupby('col1')['col2'].transform(lambda x: ';'.join(x))
df['col4'] = df.groupby('col1', as_index=False)['col2'].transform(lambda x: list(set(x)))
df['col5'] = df['col4'].str.join(';')
我想你已经很接近了,在这里添加一个
strip
:
df2['col_out2'] = df2.groupby('col1')['col2'].transform(lambda x: ';'.join(x.unique())).str.strip(';')
它的输出:
col1 col2 col0 col_out col_out2
0 a 1 s2;s3 s2;s3
1 a s2 2 s2;s3 s2;s3
2 a s2 3 s2;s3 s2;s3
3 a s3 3 s2;s3 s2;s3
4 b 4 s1 s1
5 b s1 5 s1 s1
6 c 6
如果不是s2;s3代表第1列?
df.mask(df.eq(“”)).groupby('col1').transform(lambda x:';').join(x.dropna().unique())
当然,你是对的,@ParijatBhatt-fixed.@user3483203,我收到了这样的警告futurearning:elementwise比较失败;而是返回标量,但将来将执行元素级比较结果=方法(y)