在多列上使用pandas groupby函数(Use pandas groupby function on multiple columns)
我有一个类似于此的DataFrame:
Key Departure Species1 Species2 Status 1 R Carlan Carlan D 1 R Scival Carex C 2 R Carlan Scival D 2 R Scival Bougra C 3 D Carlan Carlan D 3 D Scival Scival C我想计算每个独特Species1在给定Departure的出现次数和C的D的Status
我想要的输出是:
Species1 RD RC DD DC Carlan 2 NaN 1 NaN Scival NaN 2 NaN 1I have a DataFrame similar to this:
Key Departure Species1 Species2 Status 1 R Carlan Carlan D 1 R Scival Carex C 2 R Carlan Scival D 2 R Scival Bougra C 3 D Carlan Carlan D 3 D Scival Scival CI want to count the occurrences of each unique Species1 for a given Departure and Status of D of C
My desired output is:
Species1 RD RC DD DC Carlan 2 NaN 1 NaN Scival NaN 2 NaN 1最满意答案
使用pandas.crosstab()方法。 一行代码:
pd.crosstab(df.Species1, [df.Departure, df.Status])结果表:
如果你结合@ dermen的'梳子'专栏,
df['comb'] = df.Departure + df.Status pd.crosstab(df.Species1, df.comb)你会得到:
如果你真的想要那些'NaN',只需要添加.replace('0', np.nan) ,就像这样(假设import numpy as np已经完成了import numpy as np ):
pd.crosstab(df.Species1, df.comb).replace('0', np.nan)
Use the pandas.crosstab() method. A single line of code:
pd.crosstab(df.Species1, [df.Departure, df.Status])The resulting table:
If you combine with @dermen's 'comb' column,
df['comb'] = df.Departure + df.Status pd.crosstab(df.Species1, df.comb)you'll get:
If you really want those 'NaN', just tack on a .replace('0', np.nan), like so (assuming an import numpy as np has already been done):
pd.crosstab(df.Species1, df.comb).replace('0', np.nan)更多推荐
发布评论