Pandas 熊猫组由agg nunique多个栏目组成
DataFrame有三列。我想在groupby之后实现函数agg nunique,并取两列Pandas 熊猫组由agg nunique多个栏目组成,pandas,Pandas,DataFrame有三列。我想在groupby之后实现函数agg nunique,并取两列 d = {'isin_code': pd.Series([xs, ru, xs, ru, xs], index=[1,2,3,4,5]), 'inn': pd.Series([111, 111, 222, 333, 111], index=[1,2,3,4,5], 'number': pd.Series([Nan, 001, Nan, Nan, 001], index=[1,2,3,4,5])
d = {'isin_code': pd.Series([xs, ru, xs, ru, xs], index=[1,2,3,4,5]), 'inn': pd.Series([111, 111, 222, 333, 111], index=[1,2,3,4,5], 'number': pd.Series([Nan, 001, Nan, Nan, 001], index=[1,2,3,4,5])
df1 = pd.DataFrame(d)
df1['inn'] = df1['inn'].astype(str)
df1['number'] = df1['number'].astype(str)
**df1['col4'] = df1['inn'] + df1['number']**
d1 = df1.groupby(by=['isin_code'], as_index=False).agg({'col4': pd.Series.nunique})
**it's work, but so primal...**
DF = pd.merge(df1, d1, how='left', on='isin_code')
用于连接列,然后用于具有以下内容的新列:
(111+Nan)不等于(111+1.0)111计数1,111 1.0计数1与groupby isin_代码。不是很好的例子,运行后,我们将有计数1each@Alpha2020-不明白,您能添加预期输出吗?
111 NaN
+222 NaN
+111 1.0
对于xs
和111 1.0
+333 NaN
对于ru
d={'isin_code':pd.Series([ru,ru,ru,xs,xs],index=[1,2,3,4,5]),'inn':pd.Series([111,111,111,111,222,111],index=[1,2,3,4,5],'number':pd.Series([001,001,Nan,Nan,001],index=[1,2,3,4,5])df1=pd.DataFrame(d)在groupby ru 111 001计数2 ru 111 Nan计数1 xs计数1 xs 111计数后1@Alpha2020-你现在能查一下吗?
s = df1['inn'].astype(str).str.cat(df1['number'].astype(str))
df1['count'] = s.map(s.value_counts())
print (df1)
isin_code inn number count
1 xs 111 NaN 1
2 ru 111 001 2
3 xs 222 NaN 1
4 ru 333 NaN 1
5 xs 111 001 2