假设跑熊猫' dataframe [' prod_code']。value_counts()并将结果存储为' df'。操作输出:
125011 90300
762 72816
None 55512
7156 14892
75162 8825
如何提取无计数?我希望结果是55512。
我已经尝试了
>>> df.loc[df.index.isin(['None'])]
>>> Series([], Name: prod_code, dtype: int64)
以及
>>> df.loc['None']
>>> KeyError: 'the label [None] is not in the [index]'
答案 0 :(得分:2)
您似乎需要None
,而不是字符串'None'
:
df.loc[df.index.isin([None])]
df.loc[None]
编辑:
如果需要检查索引中的NaN
:
print (s1.loc[np.nan])
#or
print (df[pd.isnull(df.index)])
样品:
s = pd.Series(['90300', '90300', '8825', '8825', '8825', None, np.nan])
s1 = s.value_counts(dropna=False)
print (s1)
8825 3
90300 2
NaN 2
dtype: int64
print (s1[pd.isnull(s1.index)])
NaN 2
dtype: int64
print (s1.loc[np.nan])
2
print (s1.loc[None])
2
EDIT1:
用于剥离空格:
s = pd.Series(['90300', '90300', '8825', '8825', '8825', 'None ', np.nan])
print (s)
0 90300
1 90300
2 8825
3 8825
4 8825
5 None
6 NaN
dtype: object
s1 = s.value_counts()
print (s1)
8825 3
90300 2
None 1
dtype: int64
s1.index = s1.index.str.strip()
print (s1.loc['None'])
1
答案 1 :(得分:1)
一些事情
pd.Series([None] * 2 + [1] * 3).value_counts()
会自动删除None
。pd.Series([None] * 2 + [1] * 3).value_counts(dropna=False)
将None
转换为np.NaN
这告诉我你的None
是一个字符串。但由于df.loc['None']
不起作用,我怀疑你的字符串周围有空格。
尝试:
df.filter(regex='None', axis=0)
或者:
df.index = df.index.to_series().str.strip().combine_first(df.index.to_series())
df.loc['None']
所有这一切,我很好奇如何在索引中引用np.NaN
s = pd.Series([1, 2], [0, np.nan])
s.iloc[s.index.get_loc(np.nan)]
2