首页 > 解决方案 > 将熊猫分组列转换为字符串时出错

问题描述

我正在尝试将熊猫框架的分组列转换为字符串:

import pandas as pd

df = pd.DataFrame({
        'date' : ['2018-01-01','2018-01-01','2018-01-02','2018-01-02'], 
        'product' : ['apple','banana','banana','pear'],
        'price' : [100,200,300,400]
    })

grouped_df =  df.groupby('date').agg({'product': ['unique'], 'price': ['sum']}).reset_index()
grouped_df['product'] = grouped_df['product'].apply(  lambda l: ";".join(l.tolist()) )
print(grouped_df.to_csv(header=False))

目标是输出apple;bananaCSV 而不是['apple', 'banana']但是当我尝试运行时grouped_df['product'].apply( lambda l: ";".join(l.tolist()) ),我得到一个TypeError: ('sequence item 0: expected str instance, numpy.ndarray found', 'occurred at index unique').

任何帮助,将不胜感激。先感谢您。

标签: pythonpandascsv

解决方案


试试这样:

grouped_df['product'] = grouped_df['product']['unique'].apply(lambda x: ';'.join(x))

>>> grouped_df
         date       product price
                     unique   sum
0  2018-01-01  apple;banana   300
1  2018-01-02   banana;pear   700

问题是您试图访问多级列,但跳过了该unique级别。所以你访问的实际上是 a DataFrame,但你想访问 a Series

>>> type(grouped_df['product'])
<class 'pandas.core.frame.DataFrame'>
>>> type(grouped_df['product']['unique'])
<class 'pandas.core.series.Series'>

推荐阅读