如何过滤 NA 值并将其添加到新的 DataFrame
How to filter NA values and add it to a new DataFrame
我有一个 .csv 格式的输入数据集,我试图将其输入 python 并进行一些数据分析。示例格式如下:
col1 col2 col3 col4 col5
1 0 0 1 NA
2 3 5 1 NA
1 1 4 6 NA
7 8 9 1 1
12 13 0 34 5
4 5 6 1 2
如果您看到这里,第 5 列有 NA 值。我需要单独过滤这个 NA 值,这样所有具有 NA 值的行都应该从这个数据框中删除并复制到新的数据框中,这样得到的数据框应该如下所示:
具有 NA 值的数据框:
col1 col2 col3 col4 col5
1 0 0 1 NA
2 3 5 1 NA
1 1 4 6 NA
没有 NA 值的数据帧:
col1 col2 col3 col4 col5
7 8 9 1 1
12 13 0 34 5
4 5 6 1 2
我应该得到上面提到的两个数据帧,它们将在我的进一步分析中使用。我正在寻找 python - pandas 代码,以编程方式实现这些方法。有人可以帮我解决这个问题吗?
假设在读入之后,您的 col5 包含真正的 NaN 而不是字符串 NA,您可以简单地使用 whether they're null to select from df
:
>>> key = df["col5"].isnull()
>>> df_NA = df.loc[key]
>>> df_notNA = df.loc[~key]
>>> df_NA
col1 col2 col3 col4 col5
0 1 0 0 1 NaN
1 2 3 5 1 NaN
2 1 1 4 6 NaN
>>> df_notNA
col1 col2 col3 col4 col5
3 7 8 9 1 1.0
4 12 13 0 34 5.0
5 4 5 6 1 2.0
或者,您可以使用 groupby
,这在这里可能有点矫枉过正,但当需要考虑的情况不仅仅是两个时,效果很好:
>>> dfs = dict(list(df.groupby(df["col5"].isnull())))
>>> dfs[False]
col1 col2 col3 col4 col5
3 7 8 9 1 1.0
4 12 13 0 34 5.0
5 4 5 6 1 2.0
>>> dfs[True]
col1 col2 col3 col4 col5
0 1 0 0 1 NaN
1 2 3 5 1 NaN
2 1 1 4 6 NaN
我有一个 .csv 格式的输入数据集,我试图将其输入 python 并进行一些数据分析。示例格式如下:
col1 col2 col3 col4 col5
1 0 0 1 NA
2 3 5 1 NA
1 1 4 6 NA
7 8 9 1 1
12 13 0 34 5
4 5 6 1 2
如果您看到这里,第 5 列有 NA 值。我需要单独过滤这个 NA 值,这样所有具有 NA 值的行都应该从这个数据框中删除并复制到新的数据框中,这样得到的数据框应该如下所示:
具有 NA 值的数据框:
col1 col2 col3 col4 col5
1 0 0 1 NA
2 3 5 1 NA
1 1 4 6 NA
没有 NA 值的数据帧:
col1 col2 col3 col4 col5
7 8 9 1 1
12 13 0 34 5
4 5 6 1 2
我应该得到上面提到的两个数据帧,它们将在我的进一步分析中使用。我正在寻找 python - pandas 代码,以编程方式实现这些方法。有人可以帮我解决这个问题吗?
假设在读入之后,您的 col5 包含真正的 NaN 而不是字符串 NA,您可以简单地使用 whether they're null to select from df
:
>>> key = df["col5"].isnull()
>>> df_NA = df.loc[key]
>>> df_notNA = df.loc[~key]
>>> df_NA
col1 col2 col3 col4 col5
0 1 0 0 1 NaN
1 2 3 5 1 NaN
2 1 1 4 6 NaN
>>> df_notNA
col1 col2 col3 col4 col5
3 7 8 9 1 1.0
4 12 13 0 34 5.0
5 4 5 6 1 2.0
或者,您可以使用 groupby
,这在这里可能有点矫枉过正,但当需要考虑的情况不仅仅是两个时,效果很好:
>>> dfs = dict(list(df.groupby(df["col5"].isnull())))
>>> dfs[False]
col1 col2 col3 col4 col5
3 7 8 9 1 1.0
4 12 13 0 34 5.0
5 4 5 6 1 2.0
>>> dfs[True]
col1 col2 col3 col4 col5
0 1 0 0 1 NaN
1 2 3 5 1 NaN
2 1 1 4 6 NaN