我有pandas数据帧如下:
df =
COL_1 COL_2 VAL_1
ABC AAA ABC
CDE CDE RTY
ABC ABC RTY
ABC RTY DEF
Run Code Online (Sandbox Code Playgroud)
我想caculate含有从开始列的任意唯一值的行数COL:COL_1和COL_2(VAL_1不应使用).
预期的结果是:
GROUP COUNT
ABC 3
CDE 2
RTY 1
AAA 1
Run Code Online (Sandbox Code Playgroud)
一种可能性是手动指定列名称并计算行数,同时手动指定所有可能的值GROUP.但很明显,如果列数和值的GROUP数量很大,这个解决方案就不好了.
怎么自动完成?我认为该方法应该是过滤所有具有tunique值的行,以列开头COL?
我尝试过这个,但是在1Gb的数据集上需要很长时间才能得到一些不正确的结果.另外我不知道如何避免指定以下值GROUP:str.contains('ABC').
t_cols = [c for c in df.columns.values if not c.startswith('COL')]
aa = df.drop(t_cols,axis=1)
aa.apply(lambda row: row.astype(str).str.contains('ABC').any(), axis=1).shape
Run Code Online (Sandbox Code Playgroud)
或者您可以使用value_counts():
df.filter(regex = "^COL").stack().value_counts()
#ABC 4
#CDE 2
#AAA 1
#RTY 1
#dtype: int64
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32 次 |
| 最近记录: |