簡體   English   中英

如何基於另一列從數據框中的列加入唯一字符串

[英]How to join unique strings from a column in dataframe based on another column

我需要根據另一列的值在一列中連接唯一的字符串。

我試過groupby,但要么我錯過了一些明顯的東西,要么就是矯枉過正。

下面是輸入數據幀。 我想加盟,從獨特的字符串col2在每個值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'])

我嘗試使用轉換,但這些都沒有提供正確的列。 我不會堅持使用groupby,轉換,只要工作正常,任何其他方法都可以。

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      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM