我有一个dataframe,并希望分裂成两个基于多列的dataframe。
df应该有没有空列和状态是的所有行。其余应在df_null上
df = vehicle.csv
Status Country City Year
Yes USA New York 2001
Yes Canada 2001
Yes France Paris
No Rio 1843
No Germany Berlin 2008
Yes 2004
# df_null has all the rows with null in the three columns
df_null = df[~df[['Country', 'City', 'Year']].notnull().all(1)]
# df has all columns with not null and status = yes
df = df[df[['Country', 'City', 'Year']].notnull().all(1)]
df = df.loc[df['Status'] == 'Yes']
result = pd.concat([df, df_null])
字符串
德国行不在结果数据框上,因为它被Status = Yes
过滤掉了。
3条答案
按热度按时间7vux5j2d1#
你可以用下面的代码创建一个binary mask:
字符串
df的输出如下:
| | 城市|年份| City | Year |
| --|--|--|--| ------------ |
| 是的,是的|美国|纽约|二OO一年| 2001 |
df_null为:
| | 城市|年份| City | Year |
| --|--|--|--| ------------ |
| 是的,是的|加拿大Name||二OO一年| 2001 |
| 是的,是的|法属|巴黎|南| nan |
| 不知道||里约|一八四三| 1843 |
| 不知道|德国|柏林|二OO八年| 2008 |
| 是的,是的|||二OO四年| 2004 |
h5qlskok2#
这就是你要找的吗?
字符串
nhn9ugyo3#
如果你的问题陈述是基于Null值分割 Dataframe ,那么只需使用下面的代码。
DF_null = processed_records_DF[processed_records_DF['ColumnName'].isnull()]
DF_not_null = processed_records_DF[processed_records_DF['ColumnName'].notnull()]