python - pandas - 检索使用 unstack 函数提取的数据时出现问题用 0 填充空值

标签 python pandas

我创建了这样的数据框

df_gr_1971 = df.where(df.year == 1971).groupby(['year', 'ID1', 'ID2']).size().unstack(fill_value='0')

list_all71 = [(list(i), v) for i, v in df_gr_1971.stack().iteritems()]
list_all71 = pd.DataFrame(list_all71, columns=["ID3", "count"])
list_all71

cols = ['year', 'ID1', 'ID2']
s = df.where(df.year == 1971).groupby(cols).size().unstack(fill_value='0').stack()

L = [{'year_1971': idx[0], 'ID3': list(idx[1:]), 'count': vals} for idx, vals in s.items()]
df_list_all71 = pd.DataFrame(L)

df_list_all71

结果是这样的

      ID3     count year_1971
0   [11, B6]    2   1971.0
1   [11, H1]    1   1971.0
2   [11, H2]    1   1971.0
3   [24, B6]    1   1971.0
4   [24, H1]    0   1971.0

当我想显示计数 == 0 的行时,我使用此代码

wsp_71 = df_list_all71[df_list_all71['count']==0]
wsp_71

但是结果是这样的。

ID3 count   year

但我想看到这个结果

    ID3   count year_1971
4   [24, H1]    0   1971.0

有什么想法可以解决这个问题吗?或者我误解了什么?

最佳答案

存在问题fill_value='0' - 对于不存在的值分配字符串'0',因此需要:

.unstack(fill_value=0)
<小时/>

理论上解决方案应该是按字符串'0'过滤,但不建议将数字与字符串混合:

df_list_all71[df_list_all71['count']=='0']

关于python - pandas - 检索使用 unstack 函数提取的数据时出现问题用 0 填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53465647/

相关文章:

python - matplotlib 中带有双 for 循环的动画图

pandas - 值错误 :Wrong number of items passed 2, 放置意味着 1

Python 终止进程,退出代码为 -1073741819

python - 如何强制 pandas.io.parsers 设置特定于列的类型

python - 或在 Python 的命令行上使用带有两个变量的 argparse 函数

python - 使用计算值创建字典

python - 如何在函数中将列表中的数字视为整数

python - 编程嵌套 numba.cuda 函数调用

python - 在 pandas 中添加带条件的列计算

python - 将文本列拆分为 Pandas 数据框中的列表列,没有明确的拆分序列