熊猫拆分并连接列表结果

时间:2020-06-27 13:27:05

标签: python pandas dataframe group-by

我有一个这样的数据框:

index               int64
idline              int64
name               object
idname             object
Amount            float64
UnitPrice         float64
Qty               float64
LineTxCodeId       object
TotalAmt          float64
Number             object
CurrencyRef        object
TxnDate            object
Customer           object
CustomerId         object
DueBalance        float64
TotalTaxesRate    float64
Classname          object
ClassId            object
year                int64
client             object

我有一个具有不同名称的客户列表。因此,我想按此数据框分组以按客户和年份进行总订单。 为了将名称与几乎相同的客户分组,我决定根据前三个单词来拆分客户数据。 这是我的代码:

df['year'] = pd.DatetimeIndex(df['TxnDate']).year # add column year
df['client'] = df['Customer'].str.split(' ').str[:3] # add colum with 3 first word

问题在于df ['client']成为每一行的列表。像那样: [旧金山,旧金山,设计]

我想要一个这样的字符串:'San Francisco design'

我该怎么办?

目标是让这个分组依据:

df1 = df.groupby(['client']).agg({'Amount': ['sum']})

由于客户端列表,它现在不起作用...

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在分配“客户”列时使用join命令:

import pandas as pd 
df = pd.DataFrame(['San Francisco Design Company 1','San Francisco Design Company 2'],columns =['Customer'])
df['client'] = df['Customer'].str.split(' ').str[:3].str.join(' ')
print(df)
                         Customer                client
0  San Francisco Design Company 1  San Francisco Design
1  San Francisco Design Company 2  San Francisco Design