преобразуйте столбец фрейма данных списка в строку, разделенную запятыми, в python

#python #pandas #list #dataframe

Вопрос:

У меня есть фрейм данных df1

 id     city       year
1       LA        [2012, 2013, 2014, 2015, 2026]
2       FL        []
3       TX        [2012, 2013, 2014]
4       NY        [2012]
 

Как я могу преобразовать столбец year , содержащий список, в строку, разделенную запятыми?

Желаемый результат:

 id     city       year
1      LA         2012, 2013, 2014, 2015, 2016
2      FL         none
3      TX         2012, 2013, 2014
4      NY         2012
 

Примечание: Тип данных столбца year теперь является строковым.

Ответ №1:

Попробуй:

 df["year"] = df["year"].apply(lambda x: ", ".join(map(str, x)))
print(df)
 

С принтами:

    id city                          year
0   1   LA  2012, 2013, 2014, 2015, 2026
1   2   FL                              
2   3   TX              2012, 2013, 2014
3   4   NY                          2012
 

Или для none строки:

 df["year"] = (
    df["year"].apply(lambda x: ", ".join(map(str, x))).replace("", "none")
)
print(df)
 

С принтами:

    id city                          year
0   1   LA  2012, 2013, 2014, 2015, 2026
1   2   FL                          none
2   3   TX              2012, 2013, 2014
3   4   NY                          2012
 

Ответ №2:

Другой подход:

 df.loc[:, 'year'] = df.year.apply(str).replace('[[]]', '', regex=True)
 

Ответ №3:

Попробуй с explode потом groupby

 df.year = df.year.explode().astype(str).groupby(level=0).agg(', '.join)