Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python熊猫-如何检查数据帧中的值_Python_Pandas_If Statement_Dataframe - Fatal编程技术网

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
-as
boolean
'True'
as
string
之间存在差异,我认为您需要删除
'
,因为布尔列

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
-as
boolean
'True'
as
string
之间存在差异,我认为您需要删除
'
,因为布尔列

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
),将其从灰色变为填充。谢谢