dataframe:列值的总和,其中值为列表

2024-05-26 11:54:00 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个数据集示例。 enter image description here

在这里,列的每个值都是一个整数列表。突出显示的行是对应列列表的总和。也就是说,列“day1”的突出显示行是“day1”列中所有列表的总和,依此类推。 我尝试过使用axis的sum(),但它似乎不适用于list。
获得总和列表后,必须将其分配到具有相同列数的新数据帧中。下图中的示例,

enter image description here

任何关于算法、链接和帮助的提示都将不胜感激。谢谢


Tags: 数据算法示例列表链接整数listsum
2条回答

希望您可以通过values.tolist()获得所有的和值,并将它们转换为int值,如下所示。尝试了一个示例,结果如图所示

import pandas as pd
df = pd.read_csv("data.csv")
dl = df.values.tolist()

i = 0
for column in df:
    ilist = [sum([int(s) for s in l[i].split(',')]) for l in dl] 
    i = i+1
    print(column, " - ", sum(ilist))

-示例代码已尝试 enter image description here

您可以将数据帧转换为NumPy阵列,如下所示: df.to_numpy()

在收到类似以下内容后:

a = np.random.randint(5, size=(4, 2, 5))

这里的每个块都是您的列:

array([[[2, 4, 1, 1, 1],
        [4, 0, 1, 4, 0]],

       [[1, 2, 4, 4, 3],
        [0, 1, 4, 4, 0]],

       [[0, 0, 0, 0, 2],
        [3, 0, 4, 2, 2]],

       [[2, 0, 3, 1, 0],
        [1, 1, 3, 3, 1]]])

然后用axis求和:

np.sum(a, axis=1)

收益率:

array([[6, 4, 2, 5, 1],
       [1, 3, 8, 8, 3],
       [3, 0, 4, 2, 4],
       [3, 1, 6, 4, 1]])

准备创建数据帧

dd = {f'Day{n}':np.array2string(i, separator=',')
      for n,i in enumerate(list(np.sum(ar, axis=1)), start=1)}

创建df

df = pd.DataFrame(list(dd.values()), index=dd.keys()).T

收益率:

          Day1         Day2         Day3         Day4
0  [6,4,2,5,1]  [1,3,8,8,3]  [3,0,4,2,4]  [3,1,6,4,1]

相关问题 更多 >