从列表结构中删除数据框列中以列表形式存储的元素,并将其转换为字符串



是否可以从列表结构中删除列df['date']下的逗号分隔的日期元素并将其存储为字符串?示例dataframe:

df=pd.DataFrame({'date':[['2022-06-24'],['2021-07-07','2021-07-14'],
['2021-08-11','2021-12-17','2021-09-14','2022-02-15'],
['2019-08-19','2019-09-25'],
['2013-05-16']]})

输出应该像这样:

2022-06-24
2021-07-07,2021-07-14
2021-08-11,2021-12-17,2021-09-14,2022-02-15
2019-08-19,2019-09-25
2013-05-16

我试着:

df['date_2'] = [','.join(map(str, l)) for l in df['date']]

但是没有得到想要的输出

展开列表,然后按索引分组并加入所有日期:

>>> df['date'].explode().groupby(level=0).agg(','.join)
0                                     2022-06-24
1                          2021-07-07,2021-07-14
2    2021-08-11,2021-12-17,2021-09-14,2022-02-15
3                          2019-08-19,2019-09-25
4                                     2013-05-16
Name: date, dtype: object

替代:

>>> df['date'].apply(lambda x: ','.join(x))
0                                     2022-06-24
1                          2021-07-07,2021-07-14
2    2021-08-11,2021-12-17,2021-09-14,2022-02-15
3                          2019-08-19,2019-09-25
4                                     2013-05-16
Name: date, dtype: object

由@jezrael (建议的最佳解决方案)

>>> df['date'].str.join(',')
0                                     2022-06-24
1                          2021-07-07,2021-07-14
2    2021-08-11,2021-12-17,2021-09-14,2022-02-15
3                          2019-08-19,2019-09-25
4                                     2013-05-16
Name: date, dtype: object

最新更新