[英]Counting Mulitple Values in a Python pandas Dataframe Column
我正在嘗試計算pandas數據幀列中的唯一值,該列包含由字符串分隔的多個值。 我可以使用value_counts()來做這個,如果這是一個系列,但我如何在數據框中執行此操作? 似乎數據框架應該更容易。
數據:
ID Tags
Created at
2016-03-10 09:46:00 3074 tag_a
2016-04-13 11:50:00 3524 tag_a tag_b
2016-05-18 15:22:00 3913 tag_a tag_b tag_c
碼:
%matplotlib inline
import pandas as pd
# read csv into the data dataframe
allData = r'myData.csv'
tickets_df = pd.read_csv((allData),usecols=['Id','Created at','Tags'],parse_dates=['Created at'], index_col=['Created at'])
tickets_df.fillna(0,inplace=True)
tickets_df['2016':'2016']
# this would work with a series:
tickets_df[tickets_df['Tags'].str.split().apply(lambda x: pd.Series(x).value_counts()).sum()]
錯誤:
KeyError: '[ 3. 2. 3. 5. 2. 102. 9. 5. 1. 4. 1. 161.\n 4. 4. 1. 6. 4. 34. 1. 1. 1. 6. 2. 5.\n 1. 1. 1. 1. 11. 2. 1. 1. 3. 1. 1. 1.\n 1. 1. 1. 1. 2. 1. 1. 2. 2. 6. 1. 4.\n 2. 1. 1. 2. 1. 1. 1. 3. 2. 1. 4. 35.\n 11. 2. 1. 13. 3. 8. 63. 87. 2. 2. 1. 1.\n 1. 1. 1. 1. 150. 1. 24. 3. 7. 5. 1. 1.\n 3. 4. 2. 6. 1. 2. 3. 5. 2. 5. 15. 1.\n 42. 1. 14. 1. 1. 1. 6. 13. 13. 9. 2. 11.\n 3. 1. 1.] not in index'
期望的輸出:
tag_a 3
tag_b 2
tag_c 1
使用帶有expand=True
str.split
將每個字符串分成不同的列,然后使用stack
后跟value_counts
:
df['Tags'].str.split(expand=True).stack().value_counts()
結果輸出:
tag_a 3
tag_b 2
tag_c 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.