在Pandas中合并两个数据

时间:2015-11-10 17:42:30

标签: python pandas merge concatenation dataframe

我试图在熊猫中将数据连接起来,但它似乎对我来说效果不佳。

我有一些我希望转换为数字的数据,我能够做到这一点。然后我想让它重新加入数据集。

这是原始数据的样子:

 CallDate            Agent          Group     Direction
0  2015-09-01         Adam          Billing    Inbound
1  2015-09-01         Nathaniel     Billing    Outbound
2  2015-09-01         Jessica       Claims     Inbound
3  2015-09-01         Tom           Billing    Outbound
4  2015-09-01         Jane          CCS        Inbound

以下是将组转换为数字

的代码
data['Group']=data['Group'].astype(str)
data.Group=data['Group'].apply(lambda x:len(x))

这有效并且给了我正在寻找的东西     0 1     1 1     2 13     3 1     4 6

然后我尝试将其合并回组(基本上我想知道每个名称/号码对应的内容)

y=pd.concat([data,data.Group], ignore_index=True)
y [:5]

但结果与原始数据库相同

我有什么明显的遗漏或者更容易解决的问题,我没想到。

2 个答案:

答案 0 :(得分:2)

pd.concat()是连接两个DataFrame。我想您正在尝试连接a DataFrame中的两列。

data
Out[42]: 
     CallDate      Agent    Group Direction
0  2015-09-01       Adam  Billing   Inbound
1  2015-09-01  Nathaniel  Billing  Outbound
2  2015-09-01    Jessica   Claims   Inbound
3  2015-09-01        Tom  Billing  Outbound
4  2015-09-01       Jane      CCS   Inbound

data.Group = data.Group + data.Group.apply(lambda x:" / "+str(len(x)))

data
Out[44]: 
     CallDate      Agent        Group Direction
0  2015-09-01       Adam  Billing / 7   Inbound
1  2015-09-01  Nathaniel  Billing / 7  Outbound
2  2015-09-01    Jessica   Claims / 6   Inbound
3  2015-09-01        Tom  Billing / 7  Outbound
4  2015-09-01       Jane      CCS / 3   Inbound

您可以在pandas concat API documentation

中找到更多详细信息

更新新列

data['Group_1'] = data.Group + data.Group.apply(lambda x:" / "+str(len(x)))

data
Out[56]: 
     CallDate      Agent    Group Direction      Group_1
0  2015-09-01       Adam  Billing   Inbound  Billing / 7
1  2015-09-01  Nathaniel  Billing  Outbound  Billing / 7
2  2015-09-01    Jessica   Claims   Inbound   Claims / 6
3  2015-09-01        Tom  Billing  Outbound  Billing / 7
4  2015-09-01       Jane      CCS   Inbound      CCS / 3

答案 1 :(得分:1)

您可以使用cat功能在pandas中连接两个系列,然后在Documentation查看cat功能。

您也可以使用len函数df.Group.str.len()

轻松获取任何单词中的字符数
df['Group'] = df.Group.str.cat(df.Group.str.len().astype(str), sep=' => ')
df
Out[42]:
CallDate    Agent          Group         Direction
2015-09-01  Adam          Billing => 7   Inbound
2015-09-01  Nathaniel     Billing => 7   Outbound
2015-09-01  Jessica       Claims => 6    Inbound
2015-09-01  Tom           Billing => 7   Outbound
2015-09-01  Jane          CCS => 3       Inbound