我从一个数据帧转到另一个数据框架,并对每个唯一的人的名字旁边的列执行计算。现在,我在它旁边有一个名称和计算的输出,我想把它分成两列,放在数据框中打印。我想我应该把整个for循环放进字典,然后放进数据帧,但不确定如何做到这一点。我是这方面的初学者,非常感谢人们的帮助。请参阅以下循环件的代码:
names = df['Participant Name, Number'].unique()
for name in names:
unique_name_df = df[df['Participant Name, Number'] == name]
badge_types = unique_name_df['Dosimeter Location'].unique()
if 'Collar' in badge_types:
collar = unique_name_df[unique_name_df['Dosimeter Location'] == 'Collar']['Total DDE'].astype(float).sum()
if 'Chest' in badge_types:
chest = unique_name_df[unique_name_df['Dosimeter Location'] == 'Chest']['Total DDE'].astype(float).sum()
if len(badge_types) == 1:
if 'Collar' in badge_types:
value = collar
elif 'Chest' in badge_types:
value = chest
print(name, value)
如果在所有情况下都期望len(badge_types(==1,请尝试:
pd.DataFrame( df.groupby(['Participant Name, Number']).Total_DDE.sum() )
否则,要获得每个剂量计位置的总和,请将其作为添加到groupby上
pd.DataFrame( df.groupby(['Participant Name, Number', 'Dosimeter Location']).Total_DDE.sum() )