以下是我尝试使用带有pandas的group by
单个列的字数:
首先设置数据:
columns = ['col1','col2','col3']
data = np.array([['word1','word2','word3'] , ['word1','word5','word3'], ['word3','word7','word3']])
to_count = pd.DataFrame(data,columns=columns)
我正在尝试计算col1
中to_count
中的字数。
to_count
包含:
col1 col2 col3
0 word1 word2 word3
1 word1 word5 word3
2 word3 word7 word3
计算我使用的单词:
print(to_count.groupby('col1').count())
显示:
col2 col3
col1
word1 2 2
word3 1 1
这似乎部分正确,因为返回了单词count,但它们分布在多个列中。如何访问单个列的字数? 我只能访问字数统计数据框中的单个列,但这似乎不正确。
答案 0 :(得分:1)
如果我理解正确,我认为这就是您正在寻找的:
db.getCollection('Submissions').update(
{
"data": {$elemMatch:{
label:"Level 2",
value: {$ne: ""}}},
"data": {$elemMatch:{
label:"Level"
}}
},{})
输出:
print(to_count.groupby('col1')['col1'].count())
答案 1 :(得分:0)
您可以将value_counts()fn应用于数据帧的一列。下面逐个应用所有列:
for onecol in to_count:
print(onecol, ":\n", to_count[onecol].value_counts())
输出:
col1 :
word1 2
word3 1
Name: col1, dtype: int64
col2 :
word5 1
word2 1
word7 1
Name: col2, dtype: int64
col3 :
word3 3
Name: col3, dtype: int64
答案 2 :(得分:0)
这个怎么样:
单栏:
df['col1'].value_counts()
将返回:
word1 2
word3 1
所有列:
df.apply(lambda col: col.value_counts()).fillna(0).astype(int)
将返回:
col1 col2 col3
word1 2 0 0
word2 0 1 0
word3 1 0 3
word5 0 1 0
word7 0 1 0
复制&粘贴示例:
from io import StringIO
import pandas as pd
data = """
col1 col2 col3
0 word1 word2 word3
1 word1 word5 word3
2 word3 word7 word3
"""
df = pd.read_table(StringIO(data), sep='\s+')
print(df['col1'].value_counts())
print(df.apply(lambda col: col.value_counts().astype(int)).fillna(0).astype(int))