【发布时间】:2016-02-20 11:15:13
【问题描述】:
我有一个这样的熊猫数据框:
order_id buyer_id phone_no
611 261 9920570003
681 261 9321613595
707 261 9768270700
707 261 9768270700
707 261 9768270700
708 261 9820895896
710 261 7208615775
710 261 7208615775
710 261 7208615775
711 261 9920986486
800 234 Null
801 256 Null
803 289 Null
我必须按如下方式替换buyer_id 列:
order_id buyer_id phone_no
611 261_01 9920570003
681 261_02 9321613595
707 261_03 9768270700
707 261_03 9768270700
707 261_03 9768270700
708 261_04 9820895896
710 261_05 7208615775
710 261_05 7208615775
710 261_05 7208615775
711 261_06 9920986486
800 234 Null
801 256 Null
803 289 Null
因此,如果电话号码相同,则应将其视为同一买家,否则应将新系列添加到 261。我只想重命名261 buyer_id,其他行应该相同。因为我将来自电话的订单视为261
我可以使用以下代码在261buyer_id 中添加系列:
for i in range((len(phone_orders):
print '261_%d' %i
segments_data['buyer_id']
phone_orders 包含所有电话订单。
但我不知道如何用所需的输出替换 buyer_id 列
df['buyer_id'] = '261_' + (df['phone_no'] !=
df['phone_no'].shift()).cumsum().map("{:02}".format)
buyer_id phone_no
261_01 9920570003
261_02 9321613595
261_03 9768270700
261_03 9768270700
261_03 9768270700
261_04 9820895896
261_05 7208615775
261_05 7208615775
261_05 7208615775
261_06 9920986486
261_07 9768270700
261_07 9768270700
261_07 9768270700
261_08 9820895896
261_09 7208615775
261_09 7208615775
261_09 7208615775
所以7208615775phone_no 应该是261_05,但它给出的是261_09。
【问题讨论】:
标签: python pandas dataframe cumsum