Python 迭代具有相同结构的数据帧的dict的最佳方法是,生成一个包含每个(行、列)元素和的数据帧?
我有一个dict,d1,其中每个值是一个两列(ID和Weight)的100行数据帧 我想遍历dict,对于每个数据帧,我想对n行中的所有“权重”值求和,其中n是表示该行的1到100之间的值。然后我想将输出写入另一个dict,d2,其中键是1-100,值是值的总和 示例d1值数据帧:Python 迭代具有相同结构的数据帧的dict的最佳方法是,生成一个包含每个(行、列)元素和的数据帧?,python,pandas,numpy,dictionary,Python,Pandas,Numpy,Dictionary,我有一个dict,d1,其中每个值是一个两列(ID和Weight)的100行数据帧 我想遍历dict,对于每个数据帧,我想对n行中的所有“权重”值求和,其中n是表示该行的1到100之间的值。然后我想将输出写入另一个dict,d2,其中键是1-100,值是值的总和 示例d1值数据帧: ID Weight 1 0.021 2 0.445 3 1.018 .. .. .. 99 77.31 100 234.04 基本上,假设我有10000个这样的数据帧,我想将
ID Weight
1 0.021
2 0.445
3 1.018
..
..
..
99 77.31
100 234.04
基本上,假设我有10000个这样的数据帧,我想将10000个数据帧中ID 1的所有权重值相加,然后将10000个数据帧中ID 2的所有权重值相加,以此类推,直到ID 100
我有一个解决方案,基本上是一个嵌套循环。它起作用了,也会起作用。然而,我真的很想扩展我的基本熊猫/裸体知识,我想知道是否有一种更像蟒蛇的方法来做到这一点
我的现行守则:
for i in range (1,101):
tot = 0
for key, value in d1.items():
tot = tot + value.at[i,'Weight']
d2[i] = tot
非常感谢任何帮助和建议 您可以使用添加功能:
#create a zero filled dataframe
df = pd.DataFrame(0, index=np.arange(len(df1)), columns=df1.columns)
#iterate through dict and add values to df
for value in d1.values():
df = df.add(value)
您可以通过df_i=df_i.set_index('ID')
将您的ID
设置为索引,然后将它们全部相加,以便只添加权重,然后在结尾处df=df.reset_index()
。
例如:
df:
Ehsan,非常感谢您的详细回复-我完全错过了熊猫添加功能-这将对我今后的工作非常有用。我真的很感激。一旦我可以投票,我会回来做你的答案!编辑:看来我现在可以投票了!
df1 = pd.DataFrame([(1,2),(3,4),(5,6)], columns=['ID','Weight'])
ID Weight
0 1 2
1 3 4
2 5 6
df2 = pd.DataFrame([(10,20),(30,40),(50,60)], columns=['ID','Weight'])
ID Weight
0 10 20
1 30 40
2 50 60
df3 = pd.DataFrame([(100,200),(300,400),(500,600)], columns=['ID','Weight'])
ID Weight
0 100 200
1 300 400
2 500 600
d1 = {'df1':df1,'df2':df2,'df3':df3}
df = pd.DataFrame(0, index=np.arange(len(df1)), columns=df1.columns)
print(df)
for value in d1.values():
df = df.add(value)
ID Weight
0 111 222
1 333 444
2 555 666