Python熊猫-如何检查数据帧中的值
如何在数据帧中找到丢失的行并添加新的行 数据帧Python熊猫-如何检查数据帧中的值,python,pandas,if-statement,dataframe,Python,Pandas,If Statement,Dataframe,如何在数据帧中找到丢失的行并添加新的行 数据帧df federalState hasParking Size 0 A False 154 1 A True 531 2 B False 191 3 B True 725 4 C True 54 5 D
df
federalState hasParking Size
0 A False 154
1 A True 531
2 B False 191
3 B True 725
4 C True 54
5 D False 100
6 D True 656
对于df['federalState']
缺少C
的false
最终结果应该是这样的
federalState hasParking Size
0 A False 154
1 A True 531
2 B False 191
3 B True 725
4 C False 89
5 C True 54
6 D False 100
7 D True 656
添加新行的代码
df.loc[-1] = ['C', 'False' , 89] # adding a row
df.index = df.index + 1 # shifting index
df = too.sort_values(by=['federalState']) # sorting by index
但是我怎么才能发现线路丢失了呢?我的if
-语句不起作用
if ((df['federalState']=='C) and (df['hasParking']=='True')).any():
对于链条状况,使用
和进行和。如果hasParking
为布尔值,则应忽略==True
True
-asboolean
和'True'
asstring
之间存在差异,我认为您需要删除'
,因为布尔列
if ((data['federalState']=='C') & (data['hasParking'])).any():
#same as
#if ((data['federalState']=='C') & (data['hasParking'] == True)).any():
对于第一个,在对默认索引进行排序后可以添加:
df.loc[-1] = ['C', False , 89] # adding a row
df = df.sort_values(by=['federalState']).reset_index(drop=True)
print (df)
federalState hasParking Size
0 A False 154
1 A True 531
2 B False 191
3 B True 725
4 C True 54
5 C False 89
6 D False 100
7 D True 656
print (df.dtypes)
federalState object
hasParking bool
Size int64
dtype: object
要查找缺少的值,请使用:
df1 = df.set_index(['federalState','hasParking'])['Size'].unstack().unstack().reset_index(name='val')
print (df1)
hasParking federalState val
0 False A 154.0
1 False B 191.0
2 False C NaN
3 False D 100.0
4 True A 531.0
5 True B 725.0
6 True C 54.0
7 True D 656.0
a = df1.loc[df1['val'].isnull(), ['federalState','hasParking']]
print (a)
federalState hasParking
2 C False
对于链条状况,使用和进行和。如果hasParking
为布尔值,则应忽略==True
True
-asboolean
和'True'
asstring
之间存在差异,我认为您需要删除'
,因为布尔列
if ((data['federalState']=='C') & (data['hasParking'])).any():
#same as
#if ((data['federalState']=='C') & (data['hasParking'] == True)).any():
对于第一个,在对默认索引进行排序后可以添加:
df.loc[-1] = ['C', False , 89] # adding a row
df = df.sort_values(by=['federalState']).reset_index(drop=True)
print (df)
federalState hasParking Size
0 A False 154
1 A True 531
2 B False 191
3 B True 725
4 C True 54
5 C False 89
6 D False 100
7 D True 656
print (df.dtypes)
federalState object
hasParking bool
Size int64
dtype: object
要查找缺少的值,请使用:
df1 = df.set_index(['federalState','hasParking'])['Size'].unstack().unstack().reset_index(name='val')
print (df1)
hasParking federalState val
0 False A 154.0
1 False B 191.0
2 False C NaN
3 False D 100.0
4 True A 531.0
5 True B 725.0
6 True C 54.0
7 True D 656.0
a = df1.loc[df1['val'].isnull(), ['federalState','hasParking']]
print (a)
federalState hasParking
2 C False
IIUC,您要在“federalState”
列的每个标签中搜索是否有缺少的值
要查找不具有相同唯一值的元素,可以先执行groupby
,然后使用nunique()
检查hasParking
列中的唯一元素
要检查组中是否存在特定元素,可以尝试
df.groupby("federalState")["hasParking"].apply(lambda g: g.isin([False]).any())
federalState
A True
B True
C False # does not contain False
D True
Name: hasParking, dtype: bool
IIUC,您要在“federalState”
列的每个标签中搜索是否有缺少的值
要查找不具有相同唯一值的元素,可以先执行groupby
,然后使用nunique()
检查hasParking
列中的唯一元素
要检查组中是否存在特定元素,可以尝试
df.groupby("federalState")["hasParking"].apply(lambda g: g.isin([False]).any())
federalState
A True
B True
C False # does not contain False
D True
Name: hasParking, dtype: bool
“True”
不是您应该比较的值“True”
不是您应该比较的值感谢您的帮助。现在如何插入新行?我用df\u new=df1.fillna(0)
解决了它。非常感谢你的帮助,不客气!如果我的答案有帮助,请不要忘记-单击答案旁边的复选标记(v
),将其从灰色变为填充。谢谢,谢谢你的帮助。现在如何插入新行?我用df\u new=df1.fillna(0)
解决了它。非常感谢你的帮助,不客气!如果我的答案有帮助,请不要忘记-单击答案旁边的复选标记(v
),将其从灰色变为填充。谢谢