В панде Python У меня есть большой кадр данных, который выглядит следующим образом:Python Панда: конкатенации строки с уникальными значениями
df = pd.DataFrame ({'a' : ['foo', 'bar'] * 3,
'b' : ['foo2', 'bar2'] * 3,
'c' : ['foo3', 'bar3'] * 3,
'd' : ['q','w','e','r','t','y'],
'e' : ['q2','w2','e2','r2','t2','y2']})
a b c d e
1 bar bar2 bar3 w w2
3 bar bar2 bar3 r r2
5 bar bar2 bar3 y y2
4 foo foo2 foo3 t t2
2 foo foo2 foo3 e e2
0 foo foo2 foo3 q q2
Он содержит дюжину столбцов с дублированными значениями (а, б, в ...) и несколько с уникальными значениями (d, e). Я хотел бы, чтобы удалить все дублированные значения и собирать те, которые являются уникальными, т.е .:
a b c d e
1 bar bar2 bar3 w,r,y w2,r2,y2
4 foo foo2 foo3 t,e,q t2,e2,q2
Мы можем с уверенностью предположить, что уникальные значения только в «D» и «е», в то время как остальные всегда дублируется.
Один из способов я мог представить себе решение было бы GroupBy все дублированные столбцы, а затем применить операцию конкатенации уникальных значений:
df.groupby([df.a, df.b, df.c]).apply(lambda x: "{%s}" % ', '.join(x.d))
Одно неудобство заключается в том, что я должен перечислить все дублированные столбцы, если я хочу имейте их в моей продукции. Большая проблема заключается в том, что я конкатенирую только строки в 'd', а также 'e'.
Любые предложения?
Только в стороне вы не» t нужно передать столбцы в виде столбцов df, чтобы было достаточно: 'df.groupby (['a', 'b', 'c']). apply (lambda x:" {% s} "% ','. join (xd)) ' – EdChum
Спасибо! Причина, по которой я использовал df-нотацию, состояла в том, что изначально эти имена были очень длинными, поэтому я использую механизм автозаполнения. Чтобы избавить других от деталей, я заменил их письмами. –