具有以下資料框:
| 姓名 | 啊啊啊 | bbb |
|---|---|---|
| 米克 | 沒有任何 | 沒有任何 |
| 伊萬 | 一個 | C |
| 伊萬-彼得 | 1 | 沒有任何 |
| 巨力 | 1 | 磷 |
我想獲得兩個資料框。
- 一個有值,我們在列 中沒有 None
aaa和/或,在我的代碼bbb中命名filter_nulls - 一個我們根本沒有的地方。
df_out在我的代碼中。
這是我嘗試過的,它不會產生所需的資料幀。
import pandas as pd
df_out = {
'name': [ 'Mick', 'Ivan', 'Ivan-Peter', 'Juli'],
'aaa': [None, 'A', '1', '1'],
'bbb': [None, 'C', None, 'P'],
}
print(df_out)
filter_nulls = df_out[df_out['aaa'].isnull()|(df_out['bbb'] is None)]
print(filter_nulls)
df_out = df_out.loc[filter_nulls].reset_index(level=0, drop=True)
print(df_out)
uj5u.com熱心網友回復:
利用:
#DataFrame from sample data
df_out = pd.DataFrame(df_out)
#filter columns names by list and test if NaN or None at least in one row
m = df_out[['aaa','bbb']].isna().any(axis=1)
#OR test both columns separately
m = df_out['aaa'].isna() | df_out['bbb'].isna()
#filter matched and not matched rows
df1 = df_out[m].reset_index(drop=True)
df2 = df_out[~m].reset_index(drop=True)
print (df1)
name aaa bbb
0 Mick None None
1 Ivan-Peter 1 None
print (df2)
name aaa bbb
0 Ivan A C
1 Juli 1 P
另一個想法DataFrame.dropna和過濾索引不存在于df2:
df2 = df_out.dropna()
df1 = df_out.loc[df_out.index.difference(df2.index)].reset_index(drop=True)
df2 = df2.reset_index(drop=True)
uj5u.com熱心網友回復:
首先,需要轉換df_out為資料框,pandas.DataFrame如下所示
df_out = pd.DataFrame(df_out)
[Out]:
name aaa bbb
0 Mick None None
1 Ivan A C
2 Ivan-Peter 1 None
3 Juli 1 P
然后,對于這兩種情況,都可以使用pandas.Series.notnull.
使用值,我們在 aaa 和/或 bbb 列中沒有,在我的代碼中命名為 filter_nulls
df1 = df_out[~df_out['aaa'].notnull() | ~df_out['bbb'].notnull()]
[Out]:
name aaa bbb
0 Mick None None
2 Ivan-Peter 1 None
我們根本沒有None。df_out 在我的代碼中。
df2 = df_out[df_out['aaa'].notnull() & df_out['bbb'].notnull()]
[Out]:
name aaa bbb
1 Ivan A C
3 Juli 1 P
筆記:
如果需要,可以使用
pandas.DataFrame.reset_index獲取以下內容df_new = df_out[~df_out['aaa'].notnull() | ~df_out['bbb'].notnull()].reset_index(drop=True) [Out]: name aaa bbb 0 Mick None None 1 Ivan-Peter 1 None
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/519482.html
下一篇:大熊貓覆寫在地塊上
