我有一个这样的数据框:
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']})
由于客户端列表,它现在不起作用...
感谢您的帮助。
答案 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