繁体   English   中英

根据另一列中的字典键匹配值和更多条件填充 dataframe 中的新列

[英]Populate new column in dataframe based on dictionary key matches values in another column and some more conditions

我有一个像

数据框

我有一本包含 ec2 实例详细信息的字典

字典

现在,我想添加一个新列 'Instance Name' 并根据字典中的实例 ID 在列 'ResourceId' 中的条件填充它,并且进一步取决于字典中 Name 字段中的内容实例 ID,我想为每个匹配条目填充新列值

新列

最后,我想为我的特定用例创建单独的数据框,例如只获得 Box-Usage 结果。 像这样的东西

box_usage = df[df['lineItem/UsageType'].str.contains('BoxUsage')]
print(box_usage.groupby('Instance Name')['lineItem/BlendedCost'].sum())

新的列值没有按照我的意愿出现在相应的资源 ID 上。 它是按顺序出现的。 我已经尝试了很多东西,包括我在上面的代码中提到的,但还没有结果。 有什么帮助吗?

在经历了几个选择之后,我使用了.apply()方式,它成功了

df.insert(loc=17, column='Instance_Name', value='Other')
instance_id = []

def update_col(x):
    for key, val in ec2info.items():
        if x == key:
            if ('MyAgg' in val['Name']) | ('MyAgg-AutoScalingGroup' in val['Name']):
                return 'SharkAggregator'
            if ('MyColl AS Group' in val['Name']) | ('MyCollector-AutoScalingGroup' in val['Name']):
                return 'SharkCollector'
            if ('MyMetric AS Group' in val['Name']) | ('MyMetric-AutoScalingGroup' in val['Name']):
                return 'Metric'

df['Instance_Name'] = df.ResourceId.apply(update_col)
df.Instance_Name.fillna(value='Other', inplace=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM