J'ai une seule colonne Dataframe similaire à l'exemple ci-dessous:

import pandas
df = pandas.DataFrame({'Column': [[10, 100],[20, 200],[30, 300]]})

     Column
0 [10, 100]
1 [20, 200]
2 [30, 300]

Comment puis-je ajouter les lignes élément par élément de sorte que le résultat soit:

     Column
0 [60, 600]
0
bitwise 3 nov. 2020 à 21:54

3 réponses

Meilleure réponse

En supposant que tous les tableaux ont la même taille que dans les exemples de données:

np.array(df['Column'].to_list()).sum(axis=0)

Production:

array([ 60, 600])
0
Quang Hoang 3 nov. 2020 à 18:55

Je recommanderais la fonction Apply. Essayez-le de cette façon:

Import pandas as pd
df = pd.DataFrame({'Column': [[10, 100],[20, 200],[30, 300]]})
nums = df.Column.apply(pd.Series)
nums.sum()
0
David S-H 3 nov. 2020 à 20:17

Je publierai cette réponse car vous ne voudrez peut-être pas du tout utiliser numpy. Vous pouvez obtenir le résultat souhaité avec l'extrait de code suivant:

import pandas
df = pandas.DataFrame({'Column': [[10, 100],[20, 200],[30, 300]]})

def nth_element(n,lis):
  return [x[n] for x in lis]

df = pandas.DataFrame({'Column': [list(map(sum,[nth_element(0,df['Column']),nth_element(1,df['Column'])]))]})
print(df)

La sortie est:

      Column
0  [60, 600]

Ici, nous utilisons la fonction d'assistance 'nth_element' pour obtenir le nième élément de la liste interne d'une liste de listes (une matrice). Ensuite, nous obtenons une liste dont les listes internes sont les colonnes de votre matrice d'origine, puis nous effectuons la somme sur chaque liste (dans votre cas, il y en a 2), en utilisant la carte, et, enfin, la convertissons d'une primitive de carte en une list et enregistrez-le dans un autre bloc de données. Ce processus peut facilement devenir une fonction (au cas où vous auriez besoin de cette opération plusieurs fois):

def sum_elements_of(column,dataframe):
    results = []
    data = list(dataframe[column])
    for n in range(len(data[0])):
        results.append([x[n] for x in data])
    results = list(map(sum,results))
    return pandas.DataFrame({column:[results]})
0
ThatDudeCalledTony 3 nov. 2020 à 19:39