Python 列切片的值计数,以包含列中所有可能的唯一值
我有一个df,看起来像这样:Python 列切片的值计数,以包含列中所有可能的唯一值,python,pandas,Python,Pandas,我有一个df,看起来像这样: group val A 1 A 1 A 2 B 1 B 2 B 3 > df[df['group']=='A']['val'].value_counts() 1 2 2 1 Name: val, dtype: int64 我希望分别获取每个组的值\u计数,但希望显示每个值\u计数组的所有可能值: > df[df['group']=='A']['val
group val
A 1
A 1
A 2
B 1
B 2
B 3
> df[df['group']=='A']['val'].value_counts()
1 2
2 1
Name: val, dtype: int64
我希望分别获取每个组的值\u计数,但希望显示每个值\u计数组的所有可能值:
> df[df['group']=='A']['val'].value_counts()
1 2
2 1
3 NaN
Name: val, dtype: int64
但现在看起来是这样的:
group val
A 1
A 1
A 2
B 1
B 2
B 3
> df[df['group']=='A']['val'].value_counts()
1 2
2 1
Name: val, dtype: int64
任何人都知道我可以用所有可能的值来显示值计数的方法吗?这是有效的:
from io import StringIO
import pandas as pd
import numpy as np
data = StringIO("""group,val
A,1
A,1
A,2
B,1
B,2
B,3""")
df = pd.read_csv(data)
print(df, '\n')
res_idx = pd.MultiIndex.from_product([df['group'].unique(), df['val'].unique()])
res = pd.concat([pd.DataFrame(index=res_idx),
df.groupby('group').apply(lambda x: x['val'].value_counts())],
axis=1)
print(res)
产生:
group val
0 A 1
1 A 1
2 A 2
3 B 1
4 B 2
5 B 3
val
A 1 2.0
2 1.0
3 NaN
B 1 1.0
2 1.0
3 1.0
这项工作:
from io import StringIO
import pandas as pd
import numpy as np
data = StringIO("""group,val
A,1
A,1
A,2
B,1
B,2
B,3""")
df = pd.read_csv(data)
print(df, '\n')
res_idx = pd.MultiIndex.from_product([df['group'].unique(), df['val'].unique()])
res = pd.concat([pd.DataFrame(index=res_idx),
df.groupby('group').apply(lambda x: x['val'].value_counts())],
axis=1)
print(res)
产生:
group val
0 A 1
1 A 1
2 A 2
3 B 1
4 B 2
5 B 3
val
A 1 2.0
2 1.0
3 NaN
B 1 1.0
2 1.0
3 1.0
df.groupby(df.index).value\u counts()
对您不起作用?谢谢--我可能没有正确实现,但我收到了这个错误:“DataFrameGroupBy”对象没有属性“value\u counts”如何:df.groupby(df.index).apply(lambda x:x['val'].value\u counts())
?不幸的是,没有。这给了我完整的'val'列和第二列中的1列表。df.groupby(df.index).value\u counts()
不适用于您?谢谢--我可能没有正确实现,但我收到了这个错误:'DataFrameGroupBy'对象没有属性'value\u counts',关于:df.groupby(df.index).应用(lambda x:x['val'].value_counts())
?不幸的是,没有。这给了我完整的'val'列和第二列中的1的列表。谢谢你的帮助。Ubuntu的一行代码似乎很简单!Unutbu,不是Ubuntu。此人不是操作系统!:)很高兴你找到了你想要的东西。谢谢你的帮助。Ubuntu的一行程序似乎非常直接!Unutbu,不是Ubuntu。此人不是操作系统!:)很高兴你找到了你要找的东西。