![](/img/trans.png)
[英]Pandas dataframe how to get data from one time frame to another 1 min time frame in Time series data
[英]Pandas: How to get count of occurrence from another data frame?
我正在使用 Python Pandas。 我有 2 個數據框(即:df1、df2)。 'df1' 包含標頭級數據,如卡 ID、發行日期等。'df2' 具有粒度級數據,如由特定卡 ID 執行的每筆交易。 'Card-id' 在兩個數據幀之間是通用的。
df1:
first_active_month card_id feature_1 feature_2 feature_3
2017-06 C_ID_92a2005557 5 2 1
2017-01 C_ID_3d0044924f 4 1 0
2016-08 C_ID_d639edf6cd 2 2 0
2017-09 C_ID_186d6a6901 4 3 0
2017-11 C_ID_cdbd2c0db2 1 3 0
df2:
junk_id authorized_flag card_id city_id Authorized
13292136 Y C_ID_92a2005557 101 N
20069042 Y C_ID_7a238b3713 69 N
5029656 Y C_ID_92a2005557 17 N
16356907 N C_ID_3d0044924f -1 Y
8203441 Y C_ID_fcf33361c2 17 N
我想在 df1 中添加一個“頻率”列,它將顯示 df2 中 df1 的每個卡 ID 的出現次數。 所以,df1 應該如下所示:
df1 (after executing the command):
first_active_month card_id feature_1 feature_2 feature_3 frequency
2017-06 C_ID_92a2005557 5 2 1 2
2017-01 C_ID_3d0044924f 4 1 0 5
2016-08 C_ID_d639edf6cd 2 2 0 3
2017-09 C_ID_186d6a6901 4 3 0 1
2017-11 C_ID_cdbd2c0db2 1 3 0 7
請注意:我是 Python / Pandas 的新手。 我已經瀏覽了該站點的多個線程,但所有線程都提到在同一個數據幀中計數。 我正在尋找使用加入/合並功能的計數。 我已經瀏覽過的主題: 這個、 這個、 這個、 這個、 這個、 這個、 這個。
我認為您需要Series.map
和Series.value_counts
和Series.fillna
來替換缺失值:
df1['frequency'] = df1['card_id'].map(df2['card_id'].value_counts()).fillna(0).astype(int)
print (df1)
first_active_month card_id feature_1 feature_2 feature_3 \
0 2017-06 C_ID_92a2005557 5 2 1
1 2017-01 C_ID_3d0044924f 4 1 0
2 2016-08 C_ID_d639edf6cd 2 2 0
3 2017-09 C_ID_186d6a6901 4 3 0
4 2017-11 C_ID_cdbd2c0db2 1 3 0
frequency
0 2
1 1
2 0
3 0
4 0
實際上,您的問題中有一部分答案。 你應該先計算頻率:
df3 = df2.groupby(["card_id"], as_index=False)[["junk_id"]].count().rename(columns={"junk_id":"frequency"})
需要重命名部分,因為 pandas 在 groupby 操作后保留列名不變。 接下來,您可以合並您的 dfs:
df1 = df1.merge(df3, how='left', on='card_id')
您當然可以通過將df3
替換為 merge 語句在一行中做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.