簡體   English   中英

兩個pandas數據幀中列中的唯一值數

[英]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被命名為data1data2 因此,我可以輕松地使用每個data1data2列中的唯一值的數量

 uniques = data.apply(pd.Series.nunique)

data分別由data1data2替換。 因此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM