python - 将系列添加到 Pandas 数据框会产生 NaN 列

标签 python pandas

使用此数据集(为简洁起见省略了一些列和数百行)。 . .

    Year    Ceremony    Award          Winner   Name    
0   1927/1928   1       Best Actress    0.0     Louise Dresser  
1   1927/1928   1       Best Actress    1.0     Janet Gaynor
2   1937        10      Best Actress    0.0     Janet Gaynor
3   1927/1928   1       Best Actress    0.0     Gloria Swanson  
4   1929/1930   3       Best Actress    0.0     Gloria Swanson
5   1950        23      Best Actress    0.0     Gloria Swanson  

我使用了以下命令。 . .

ba_dob.loc[ba_dob.Winner == 0.0, :].groupby('Name').Winner.count()

创建以下系列。 . .

Name
Ali MacGraw                1
Amy Adams                  1
Angela Bassett             1
Angelina Jolie             1
Anjelica Huston            1
Ann Harding                1
Ann-Margret                1
Anna Magnani               1
Anne Bancroft              4
Anne Baxter                1
Anne Hathaway              1
Annette Bening             3
Audrey Hepburn             4

我尝试像这样将系列添加到原始数据框中。 . .

ba_dob['New_Col'] = ba_dob.loc[ba_dob.Winner == 0.0, :].groupby('Name').Winner.count()

我得到了一列 NaN 值。

我读过其他帖子,暗示工作中可能存在一些错误的索引,但我不确定这将如何解决。更具体地说,为什么 Pandas 不能排列索引,因为 groupby 和 count 来自同一个表。还有其他事情吗?

最佳答案

我想你需要size , 不是 count ,因为 count 排除了 NaN:

最后map Groupby 创建的 SeriesName:

m = ba_dob.Winner == 0.0
ba_dob['new'] = ba_dob['Name'].map(ba_dob[m].groupby('Name').Winner.size())
print (ba_dob)
        Year  Ceremony         Award  Winner            Name  new
0  1927/1928         1  Best Actress     0.0  Louise Dresser    1
1  1927/1928         1  Best Actress     1.0    Janet Gaynor    1
2       1937        10  Best Actress     0.0    Janet Gaynor    1
3  1927/1928         1  Best Actress     0.0  Gloria Swanson    3
4  1929/1930         3  Best Actress     0.0  Gloria Swanson    3
5       1950        23  Best Actress     0.0  Gloria Swanson    3

另一种解决方案:

ba_dob['new'] = ba_dob['Name'].map(ba_dob.loc[m, 'Name'].value_counts())

关于python - 将系列添加到 Pandas 数据框会产生 NaN 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599279/

相关文章:

python - 如何读取一整行,然后只读取最后五个字符?

python - e2fsprogs/e2fslibs 是否有可用的 python bindinds?

python - 对数据框中的一组选定行执行数学运算的最有效方法是什么

python - 绘制数据框中多列的带有误差条的条形图

python - 删除和移动 pandas df 中的值

python - 如何使用 jinja2 API 渲染 block

python - 如何调试作为 vim 插件一部分的 python 函数?

python - Django:禁止用户编辑配置文件

python - Pandas - 在多列上有条件地合并数据框

python - 规范错误: nested renamer is not supported error while using agg function on dictionary