Я пытаюсь суммировать столбец внутри dataFrame, который представляет собой набор int.
что-то вроде: ['xxxx',{1,2,3}] и мне нужно ['xxxx',6]
Спасибо за вашу помощь.
for index,row in df_clusters.iterrows():
if isinstance(row['sum_coefs'],set):
row.loc['sum_coefs']=sum(row['sum_coefs'])
Я получил на выходе неизмененный Dataframe с набором в моем столбце sum_coefs, а не с суммой.
Взгляните на этот вопрос: stackoverflow.com/questions/41286569/get-total-of-pandas-column
Можно попробовать использовать Series.apply
:
# Setup
df_clusters = pd.DataFrame(['xxxx',set([1,2,3])], columns=['sum_coefs'])
def sum_sets(val):
if isinstance(val, set):
return sum(val)
return val
df_clusters['sum_coefs'] = df_clusters['sum_coefs'].apply(sum_sets)
[вне]
0 xxxx
1 6
dtype: object
Или, альтернативно, используя встроенную функцию lambda
для достижения того же результата:
df_clusters['sum_coefs'] = df_clusters['sum_coefs'].apply(lambda x: sum(x) if isinstance(x, set) else x)
Пожалуйста, предоставьте образец вашего
DataFrame
. Кроме того, вообще хранение списков в DataFrame (и в этом случае список с набором) не является хорошей идеей.