从系列创建一个数据框,特别是如何重命名其中的列(示例:使用 NA / NaN)

问题描述 投票:0回答:1

Python 新手。我来自 SQL 世界,习惯于运行查询并应用它们。获取事物列表,获取它们的计数,然后使用该计数的子集(例如前 5 个)并将其应用到其他数据,这很方便。对于 Python/Pandas,我仍然没有完全理解这个过程。举例来说:

一个简单的数据集:

`import pandas as pd

dataset = (
    [1,2,3,4,5,6],
    [1,None,3,4,5,6],
    [1,None,3,4,5,6],
    [1,2,None,4,5,6],
    [1,None,3,None,5,6],
    [1,2,None,4,5,6],
    [1,None,3,None,5,6],
    [1,2,3,4,5,None],
    [1,2,3,4,5,None]
)    
df = pd.DataFrame(dataset, columns=['A','B','C','D','E','F'])`

然后创建一个数据框来查找 NaN:

    nan_df = df.isna()

然后统计每一行的实例数:

    grouped_nan = nan_df.groupby(['A','B', 'C', 'D','E', 'F'], sort=True).value_counts()

我工作的原始集合有大约 200 行。这个简化的例子产生了这个:

A      B      C      D      E      F    
False  False  False  False  False  False    1
                                   True     2
              True   False  False  False    2
       True   False  False  False  False    2
                     True   False  False    2
Name: count, dtype: int64

这就是我遇到麻烦的地方。我想做的事情最好在Dataframe中完成(上面是一个Series)。以下内容使其成为 DataFrame:

    grouped_nan_df = grouped_nan.to_frame()

但它并没有以我可以管理的方式带来最后一列(计数)。我可以看到它,但我无法用它做任何事情。

如果我尝试引用包含计数的列,它无法识别它。

如果我尝试重命名最后一列,它不起作用:

`grouped_nan_df.rename(columns={grouped_nan_df.columns[5]:"new_count"}, inplace=True)`

给出错误“索引 5 超出尺寸 1 的轴 0 的范围”。

最后我想要的是一个包含计数的 DataFrame。有办法到达吗?

任何帮助表示赞赏!

安迪

python pandas dataframe nan series
1个回答
0
投票

IIUC,你可以只使用

groupby
as_index=False
然后组队
size
:

out = nan_df.groupby(['A','B', 'C', 'D','E', 'F'], as_index=False).size()

输出:

       A      B      C      D      E      F  size
0  False  False  False  False  False  False     1
1  False  False  False  False  False   True     2
2  False  False   True  False  False  False     2
3  False   True  False  False  False  False     2
4  False   True  False   True  False  False     2
© www.soinside.com 2019 - 2024. All rights reserved.