首页 > 解决方案 > 我使用带有 python 的 pandas 编写了代码。我想将代码转换为一个新的数据框,输出分为两列

问题描述

我从一个数据框转到另一个数据框,并对每个唯一人员的姓名旁边的列执行计算。现在我在它旁边有一个名称和计算的输出,我想将它分成两列并将其放入数据框中并打印。我在想我应该将整个 for 循环放入字典然后放入数据框,但不确定如何做到这一点。我是这方面的初学者,非常感谢人们的帮助。请参阅下面 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)

标签: python-3.xpandasdataframe

解决方案


如果您期望 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() )

推荐阅读