[英]Count number of occurences of a particular value in each column in pandas dataframe
[英]Count number of occurences of a column changing value from 0 to 1 and 0 to 2
假設我有df1['col1']
和df2['col2']
兩列的長度相等。 列中的值僅為0
、 1
和2
。
如果df
中的每個對應行都是關於元素的轉換,我如何找到從0
-> 2
和1
-> 2
從df1
到df2
的變化計數?
例如,我需要計算下面 2 列中的變化
print(df1['orig_label'][0:5])
Name: predicted_label, dtype: int64
0 2
1 2
2 0
3 0
4 1
print(df2['predicted_label'][0:5])
Name: predicted_label, dtype: int64
0 1
1 1
2 0
3 2
4 2
預期 output:1 和 1
這是 0->2 和 1->2 轉換的計數
這是pandas.crosstab
的用例:
pd.crosstab(df1['col1'], df2['col2'])
Output:
col2 0 1 2
col1
0 1 0 1
1 0 0 1
2 0 2 0
要僅獲得 0->2 和 1->2:
pd.crosstab(df1['col1'], df2['col2']).loc[[0,1], [2]]
Output:
col2 2
col1
0 1
1 1
這個怎么樣?:
df1 = pd.DataFrame(data={"col1":[0,1,2,3,4], "col2":[2,2,0,0,1]}, columns=["col1", "col2"])
df["0->2"] = df.apply(lambda row: 1 if row["col1"] == 0 and row["col2"] == 2 else 0, axis=1)
df["1->2"] = df.apply(lambda row: 1 if row["col1"] == 1 and row["col2"] == 2 else 0, axis=1)
print("N 0->2 = {}".format(df["0->2"].sum()))
print("N 1->2 = {}".format(df["1->2"].sum()))
這可能會在原始 dataframe 中添加兩個額外的列,但如果您不想這樣做,也可以將它們創建為單獨的系列對象:
df = pd.DataFrame(data={"col1":[0,1,2,3,4], "col2":[2,2,0,0,1]}, columns=["col1", "col2"])
zeroToTwo = df.apply(lambda row: 1 if row["col1"] == 0 and row["col2"] == 2 else 0, axis=1)
oneToTwo = df.apply(lambda row: 1 if row["col1"] == 1 and row["col2"] == 2 else 0, axis=1)
print("N 0->2 = {}".format(zeroToTwo.sum()))
print("N 1->2 = {}".format(oneToTwo.sum()))
這是一種使用zip()
和value_counts()
的方法
(pd.Series(['0-2' if (col1 == 0 and col12 == 2) else '1-2' if (col1 == 1 and col2 == 2) else None for col1,col2 in zip(df['col1'],df['col2'])])
.value_counts())
Output
0-2 1
1-2 1
dtype: int64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.