如何根据具有不同数据类型的两列中的条件创建新列?

How do I create a new column based on a condition out of two columns with different datatypes?

我目前正在处理一个如下所示的大数据集:

我遇到的问题是每天报告的案例分为 'Negative'、'Positive' 和 'Inconclusive' 个案例。我的目标是总结每天报告的案例数量,但同时我还想为每种案例创建单独的列(每天的负面案例一列,正面案例一列,另一列为不确定的)。

为了达到我的目标,我需要做的就是通过使用 overall_outcome 列和 new_results_reported 列创建条件来过滤数据集。 我在负面案例中尝试过:

america3 = pd.DataFrame(data, columns = ['overall_outcome', 'new_results_reported']) contain_values = america3[america3['overall_outcome'].str.contains('Negative')] contain_values.head(20)

我只是不知道我是否在这样做 correctly.If 我所做的有点正确然后我仍然无法弄清楚如何仅使用负数创建新列。如果它不正确,那么我不知道下一步该采取什么步骤。我想问题是 overall_outcome 是一个对象而 new_results_reported 是一个 int64.

我希望我说得有道理。

Panda 的groupby 功能就是你想要的,我想。创建一个仅包含所需列的新数据框,并按结果和日期汇总所有负面、正面或不确定案例的总数。请看这个玩具示例:

import pandas as pd

row1list = ['Negative', 100, '2020/03/01', 'abc']
row2list = ['Negative', 200, '2020/03/01', 'abc']
row3list = ['Negative', 110, '2020/03/02', 'abc']
row4list = ['Negative', 220, '2020/03/02', 'abc']
row5list = ['Inconclusive', 10, '2020/03/01', 'bcd']
row6list = ['Inconclusive', 20, '2020/03/01', 'bcd']
row7list = ['Positive', 3, '2020/03/01', 'tuv']
row8list = ['Positive', 5, '2020/03/01', 'tuv']
america3 = pd.DataFrame([row1list, row2list, row3list, row4list, row5list, row6list, row7list, row8list],
                  columns=['overall_outcome', 'new_results_reported', 'date', 'col_xyz'])

df_dailies = america3.groupby(['overall_outcome', 'date'], as_index=False).agg({
    'new_results_reported': sum})

给你这个数据框


  overall_outcome        date  new_results_reported
0    Inconclusive  2020/03/01                    30
1        Negative  2020/03/01                   300
2        Negative  2020/03/02                   330
3        Positive  2020/03/01                     8