我想检查数据帧中是否存在行,以下是我的代码:
df = pd.read_csv('dbo.Access_Stat_all.csv',error_bad_lines=False, usecols=['Name','Format','Resource_ID','Number'])
df1 = df[df['Resource_ID'] == 30957]
df1 = df1[['Format','Name','Number']]
df1 = df1.groupby(['Format','Name'], as_index=True).last()
pd.options.display.float_format = '{:,.0f}'.format
df1 = df1.unstack()
df1.columns = df1.columns.droplevel()
if 'entry' in df1:
df2 = df1[1:4].sum(axis=0)
else:
df2 = df1[0:3].sum(axis=0)
df2.name = 'sum'
df2 = df1.append(df2)
print(df2)
Run Code Online (Sandbox Code Playgroud)
这是输出:
Name Apr 2013 Apr 2014 Apr 2015 Apr 2016 Apr 2017 Aug 2010 Aug 2013
Format
entry 0 0 0 1 4 1 0
pdf 13 12 4 23 7 1 9
sum 13 12 4 24 11 2 9
Run Code Online (Sandbox Code Playgroud)
请问如果"项目"在DF2:如果"进入"存在的列只检查?我猜,情况一定是这样的.我们可以看到行'条目'存在,但我们仍然处于其他条件(如果它已经登陆,如果2016年4月的声明总和将是23).
如果我检查它没有行'entry'的文件,它再次登陆else语句(如我所料),所以我认为它总是进入else条件.
如何检查pandas中是否存在行?
jez*_*ael 14
我认为你需要比较索引值 - 输出是True和Falsenumpy数组.对于标量需求any- 检查至少一个True或all检查所有值是否为Trues:
(df.index == 'entry').any()
(df.index == 'entry').all()
Run Code Online (Sandbox Code Playgroud)
约翰高尔特评论的另一个解决方案:
'entry' in df.index
Run Code Online (Sandbox Code Playgroud)
如果需要检查子字符串:
df.index.str.contains('en').any()
Run Code Online (Sandbox Code Playgroud)
样品:
df = pd.DataFrame({'Apr 2013':[1,2,3]}, index=['entry','pdf','sum'])
print(df)
Apr 2013
entry 1
pdf 2
sum 3
print (df.index == 'entry')
[ True False False]
print ((df.index == 'entry').any())
True
print ((df.index == 'entry').all())
False
Run Code Online (Sandbox Code Playgroud)
#check columns values
print ('entry' in df)
False
#same as explicitely call columns (better readability)
print ('entry' in df.columns)
False
#check index values
print ('entry' in df.index)
True
#check columns values
print ('Apr 2013' in df)
True
#check columns values
print ('Apr 2013' in df.columns)
True
df = pd.DataFrame({'Apr 2013':[1,2,3]}, index=['entry','entry','entry'])
print(df)
Apr 2013
entry 1
entry 2
entry 3
print (df.index == 'entry')
[ True True True]
print ((df.index == 'entry').any())
True
print ((df.index == 'entry').all())
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17567 次 |
| 最近记录: |