[英]Number of unique values in columns in two pandas dataframe
我有兩個pd.DataFrame
對象(從.csv文件中讀取),比方說,
1, 2
1, 3
2, 4
和
2, 1
1, 2
3, 3
假設DataFrame
被命名為data1
和data2
。 因此,我可以輕松地使用每個data1
和data2
列中的唯一值的數量
uniques = data.apply(pd.Series.nunique)
data
分別由data1
和data2
替換。 因此2, 3
對於data1
,我將獲得2, 3
對於data2
2, 3
我將獲得3, 3
。 有沒有辦法(除了連接DataFrame
),以便在組合這兩個DataFrame
時可以得到唯一值的數量? 我想要3, 4
。
我想不是。 首先需要concat
:
df = pd.concat([df1,df2]).apply(pd.Series.nunique)
print (df)
a 3
b 4
dtype: int64
#use numpy unique to count uninues after combining same columns from both DF.
len(np.unique(np.c_[df1.iloc[:,0],df2.iloc[:,0]]))
Out[1398]: 3
len(np.unique(np.c_[df1.iloc[:,1],df2.iloc[:,1]]))
Out[1399]: 4
另一種適用於任意數量數據幀的替代方案:
dfs = [df1, df2]
print([
len(set(np.concatenate([df[colname].unique() for df in dfs])))
for colname in dfs[0]
])
[3, 4]
請注意,這僅在所有數據框具有相同列名時才有效。
我認為concat
是最好的選擇,除非你的數據框已經填滿你的本地內存: 連接將復制
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.