在另一个列值的基础上创建一个pandas dataframe列

时间:2019-08-07 07:46:11

标签: python pandas

嗨,我在pandas数据框中有一个专栏网站,其值类似于expedia,MMT,Booking.com等

我想在数据框中添加两列。

1)My_Site,其网站栏值应为“ Expedia”和“ MMT” 2)另一列Cmp_site,具有除新建My_site列的值之外的site列的所有值。

例如

webSite列具有值expedia,MMT,Booking.com

现在“我的网站”列应具有expedia,MMT 和Cmp_site应该具有Booking.com

请帮助!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您将拥有一个这样的数据框:

      My_Site
0     Expedia
1  MakeMyTrip
2     Booking

您现在希望每个站点旁边都有其他站点以进行比较。为此,我将使用itertools来生成组合。我将组合限制为2,因为这就是我们想要的。

import itertools

newList = []

for subset in itertools.combinations(siteList, 2):
    newList.append(subset)

newList = [list(row) for row in newList]

此时,您的newList如下:

[['Expedia', 'MakeMyTrip'], ['Expedia', 'Booking'], ['MakeMyTrip', 'Booking']]

现在通过将它们分配给pandas并将list用作list列,将它们分配到dataframe数据帧:

mySite = []
cmpSite = []

for i in range(len(level1)):
    mySite.append(newList[i][0])
    cmpSite.append(newList[i][1])

newDf = pd.DataFrame()
newDf['My_Site'] = mySite
newDf['Cmp_Site'] = cmpSite

最终输出:

Out[90]: 
      My_Site    Cmp_Site
0     Expedia  MakeMyTrip
1     Expedia     Booking
2  MakeMyTrip     Booking

您现在可以为每个站点组合以与其他站点进行比较。