访问 pandas 系列的元素
Access elements of pandas series
我有一个数据框,我想提取特定列中 0/1 的频率。
df=pd.DataFrame({'A':[0,0,1,0,1]})
df
Out[6]:
A
0 0
1 0
2 1
3 0
4 1
正在计算0/1s的出现频率-
df['A'].value_counts()
Out[8]:
0 3
1 2
Name: A, dtype: int64
type(df['A'].value_counts())
Out[9]: pandas.core.series.Series
我如何提取 0 和 1 的频率,让我们假设两个变量 1 和 0 为 -
zeros=3, ones=2
我认为 return 字典会更灵活一些:
In [234]: df['A'].value_counts().to_dict()
Out[234]: {0: 3, 1: 2}
或
In [236]: d = df['A'].astype(str).replace(['0','1'], ['zeros','ones']).value_counts().to_dict()
In [237]: d
Out[237]: {'ones': 2, 'zeros': 3}
In [238]: d['ones']
Out[238]: 2
In [239]: d['zeros']
Out[239]: 3
您也可以直接访问:
In [3]: df['A'].value_counts().loc[0]
Out[3]: 3
In [4]: df['A'].value_counts().loc[1]
Out[4]: 2
解决这个问题的另一种方法是使用collections library
和其中的函数counter()
。
import collections
c = collections.Counter(df['A'])
c
Out[31]: Counter({0: 3, 1: 2})
count_0s=c.Counter(df['A'])[0]#Returns 3
count_1s=c.Counter(df['A'])[1]#Returns 2
我有一个数据框,我想提取特定列中 0/1 的频率。
df=pd.DataFrame({'A':[0,0,1,0,1]})
df
Out[6]:
A
0 0
1 0
2 1
3 0
4 1
正在计算0/1s的出现频率-
df['A'].value_counts()
Out[8]:
0 3
1 2
Name: A, dtype: int64
type(df['A'].value_counts())
Out[9]: pandas.core.series.Series
我如何提取 0 和 1 的频率,让我们假设两个变量 1 和 0 为 -
zeros=3, ones=2
我认为 return 字典会更灵活一些:
In [234]: df['A'].value_counts().to_dict()
Out[234]: {0: 3, 1: 2}
或
In [236]: d = df['A'].astype(str).replace(['0','1'], ['zeros','ones']).value_counts().to_dict()
In [237]: d
Out[237]: {'ones': 2, 'zeros': 3}
In [238]: d['ones']
Out[238]: 2
In [239]: d['zeros']
Out[239]: 3
您也可以直接访问:
In [3]: df['A'].value_counts().loc[0]
Out[3]: 3
In [4]: df['A'].value_counts().loc[1]
Out[4]: 2
解决这个问题的另一种方法是使用collections library
和其中的函数counter()
。
import collections
c = collections.Counter(df['A'])
c
Out[31]: Counter({0: 3, 1: 2})
count_0s=c.Counter(df['A'])[0]#Returns 3
count_1s=c.Counter(df['A'])[1]#Returns 2