Python 如何从数据帧中逗号分隔的值中的特定子字符串开始计算字符串的出现次数?
我是Python新手。我使用的数据帧(360000行和2列)如下所示: 营业日期Python 如何从数据帧中逗号分隔的值中的特定子字符串开始计算字符串的出现次数?,python,pandas,dataframe,Python,Pandas,Dataframe,我是Python新手。我使用的数据帧(360000行和2列)如下所示: 营业日期 P01 2019-07-6 , 2018-06-05, 2019-07-06... P02 2016-03-6 , 2019-04-10 P03 2019-01-02 “日期”列的日期以逗号分隔,日期为2010-2019年。我试图只计算每个业务id的2019年每个月的日期。具体而言,我正在寻找输出: 有人能帮我吗?谢谢。如果它们还不是datetime对象,您可以先
P01 2019-07-6 , 2018-06-05, 2019-07-06...
P02 2016-03-6 , 2019-04-10
P03 2019-01-02
“日期”列的日期以逗号分隔,日期为2010-2019年。我试图只计算每个业务id的2019年每个月的日期。具体而言,我正在寻找输出:
有人能帮我吗?谢谢。如果它们还不是datetime对象,您可以先将列(系列)转换为datetime:
pd.to\u datetime()
注意:格式
参数
然后您可以通过.dt
i、 edf[df.COLUMN\u NAME.dt.month==5]
您可以执行以下操作
str.split
将每个单元格中的日期分隔为一个列表分解
以展平列表pd转换为datetime。转换为\u datetime
并提取月份pd.crosstab
透视/计算月份并加入s = pd.to_datetime(df['date'].str.split('\s*,\s*').explode()).dt.to_period('M')
out = pd.crosstab(s.index,s )
# this gives the expected output
df.join(out)
输出(out
):
date 2016-03 2018-06 2019-01 2019-04 2019-07
row_0
0 0 1 0 0 2
1 1 0 0 1 0
2 0 0 1 0 0