pandas 创建原始 Dataframe 中某个字段为空的新 Dataframe

zc0qhyus  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(138)

使用Python3和Pandas。我承认我是一个新手,我很难找到这个问题的答案。
我有一个包含大量信息的 Dataframe ,我试图得到一个 Dataframe ,它只是原始数据中某个特定字段为空的项目。
我已经查询了我的数据库,得到了一个名为full_df的 Dataframe ,它包含了数据库中所有项目的所有信息,现在我想创建一个新的 Dataframe ,只选择full_df中一个字段为空的项目。
这是我尝试过的方法:

no_rate = full_df[(full_df['rate'] == "")]

即使我知道有加载项的“rate”为空,也不会返回任何内容。我希望 Dataframe no_rate填充所有“rate”为空的项。
如何为此新 Dataframe 选择这些项目?

cdmah0mi

cdmah0mi1#

有几件事你需要做。首先,你的rate列的数据类型是字符串还是对象?df.dtypes会告诉你。如果不是,那么你就不能用""测试它。
其次,更重要的是,执行条件选择的一种方法是使用loc
因此,如果您的费率列如下所示

df = pd.DataFrame({'Rate': ['good', 'good', 'bad', 'medium', '', 'bad', '', 'good']})
df

    Rate
0   good
1   good
2   bad
3   medium
4   
5   bad
6   
7   good

你就可以写

df.loc[df['Rate']==""]

并得到

Rate
4   
6

它实际上显示的是内容,但是因为里面什么都没有,所以看起来只是行号,让我们添加另一列,以便更清楚地查看结果。

df['Color'] = ['Red', 'Blue', 'Yellow', 'Red', 'Yellow', 'Red', 'Green', 'Blue']
df
    Rate    Color
0   good    Red
1   good    Blue
2   bad Yellow
3   medium  Red
4       Yellow
5   bad Red
6       Green
7   good    Blue

以及

df.loc[df['Rate'] == ""]

显示

Rate    Color
4       Yellow
6       Green

如果你的利率实际上是一个数字

df['Decimal_Rate'] = [.8, .8, .3, .6, np.nan, .2, np.nan, .9]
df
    Rate    Color   Decimal_Rate
0   good    Red 0.8
1   good    Blue    0.8
2   bad Yellow  0.3
3   medium  Red 0.6
4       Yellow  
5   bad Red 0.2
6       Green   
7   good    Blue    0.9

如果你想把数字中的空单元格分离出来,你可以这样做:

df.loc[df['Decimal_Rate'].isna()]

这导致了

Rate    Color   Decimal_Rate
4       Yellow  
6       Green

相关问题