我有一个单列数据框,类似于下面的示例:
import pandas
df = pandas.DataFrame({'Column': [[10, 100],[20, 200],[30, 300]]})
Column
0 [10, 100]
1 [20, 200]
2 [30, 300]
如何逐个元素添加行,这样结果将是:
Column
0 [60, 600]
答案 0 :(得分:0)
假定所有数组的大小与示例数据中的大小相同:
np.array(df['Column'].to_list()).sum(axis=0)
输出:
array([ 60, 600])
答案 1 :(得分:0)
我将发布此答案,因为您可能根本不想使用numpy。您可以使用以下代码段获得所需的结果:
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)
输出为:
Column
0 [60, 600]
在这里,我们使用辅助函数'nth_element'获得列表列表(矩阵)的内部列表的第n个元素。然后,我们得到一个列表,其内部列表是您原始矩阵的列,然后我们使用地图对每个列表(在您的情况下为2)执行总和,最后将其从地图基元转换为列出并将其保存在另一个数据框中。此过程很容易成为一个功能(以防您多次需要执行此操作):
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]})
答案 2 :(得分:0)
我建议应用功能。尝试这种方式:
Import pandas as pd
df = pd.DataFrame({'Column': [[10, 100],[20, 200],[30, 300]]})
nums = df.Column.apply(pd.Series)
nums.sum()