创建pandas数据框架列基于另一列的值

2024-10-06 12:45:35 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有一个熊猫数据框架专栏网站,它有像expedia,MMT,Booking.com等价值观

我想在dataframe中添加两列

1)我的网站应该有“Expedia”和“MMT”等网站列值 2) 另一个列Cmp\u site,它包含site列的所有值,但新建的My\u site列的值除外

例如

网站专栏有expedia、MMT、Booking.com的价值观

现在Mysite专栏应该有expedia了 你的网站应该有Booking.com

请帮帮我


Tags: 数据com框架dataframe网站mysitecmp
1条回答
网友
1楼 · 发布于 2024-10-06 12:45:35

如果我理解正确,您的数据帧如下:

      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]

此时,您的新列表如下所示:

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

现在将它们分配给list,并使用list作为dataframe列,从而将它们分配到pandas数据帧:

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

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

相关问题 更多 >