2 回答
TA贡献1864条经验 获得超6个赞
IIUC,你可以add()每sum(axis=0)到正在运行的主数据帧:
import numpy as np
import pandas as pd
np.random.seed(42)
# starting empty dataframe
master = pd.DataFrame(np.zeros((1, 3)), columns=['a', 'b', 'c'])
n = 10
for _ in range(n):
# initialize new data for a, b, c on each loop
df = pd.DataFrame(np.random.randint(0, 5, size=(3, 3)), columns=['a','b','c'])
# compute column sums, add to master
master = master.add(df.sum(axis=0))
# transpose to get column names as row indices, per OP specs
master.T
0
a 52.0
b 67.0
c 74.0
master.T.to_csv("output.csv")
TA贡献1829条经验 获得超9个赞
那么,您有一个循环调用数据帧的各个部分并在sumtest每次运行时生成?
如果是这样,在每个循环中,您可以从 sumtest 中创建一个 dict,然后在该 dict 上使用 Counter,然后将其添加到循环外部定义的 dict,循环不断添加到该 dict。
如果我只是将您的数据框复制到第二个字典中,然后将这两个字典相加,那么它在您上面发布的内容中的工作方式如下:
import pandas as pd
from collections import Counter
testdf = pd.DataFrame({ 'a': [0, 2, 2],
'b': [2, 1, 2],
'c': [0, 2, 2]})
sumtest = testdf.sum()
sumtest2 = testdf.sum()
st = Counter(dict(sumtest))
st2 = Counter(dict(sumtest2))
stc = st + st2
print(stc)
输出:
Counter({'b': 10, 'a': 8, 'c': 8})
我正在做的事情和你要做的事情之间的区别在于,在你正在运行的任何循环中(作为一个函数,我假设?),你将整个字典输入作为变量函数,然后在循环中添加两个计数器,然后让函数返回这两个字典的总和作为新的整体字典。
如果对 for 循环的语言没有更多的了解,就很难指定,但这本身就有效,并且按照我的描述修改它将使它在任何 for 循环中工作。
添加回答
举报