首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:将两个dataframe列组合在一个排序列中

Pandas:将两个dataframe列组合在一个排序列中
EN

Stack Overflow用户
提问于 2018-06-07 07:01:11
回答 1查看 511关注 0票数 2

假设我有这个数据帧:

将熊猫作为pd导入

代码语言:javascript
复制
def creatingDataFrame():

    raw_data = {'Region1': ['A', 'A', 'C', 'B' , 'A', 'B'],
                'Region2': ['B', 'C', 'A', 'A' , 'B', 'A'],
                'var-1': [20, 30, 40 , 50, 10, 20],
                'var-2': [3, 4 , 5, 1, 2, 3]}
    df = pd.DataFrame(raw_data, columns = ['Region1', 'Region2','var-1', 'var-2'])
    return df

我想生成这个专栏:

代码语言:javascript
复制
df['segment']=['A-B','A-C','A-C','A-B','A-B','A-B']

请注意,它使用了列'Region1‘和'Region2’,但它们是按排序顺序的。我不知道如何使用熊猫来做到这一点。我脑海中唯一的解决方案是使用列表作为中间步骤:

代码语言:javascript
复制
Regions=df[['Region1','Region2']].values.tolist()
segments=[]
for i in range(np.shape(Regions)[0]):
    auxRegions=sorted(Regions[i][:])
    segments.append(auxRegions[0]+'-'+auxRegions[1])
df['segments']=segments

要获得以下信息:

代码语言:javascript
复制
>>> df['segments']
0    A-B
1    A-C
2    A-C
3    A-B
4    A-B
5    A-B
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 07:10:58

您需要:

代码语言:javascript
复制
df['segments'] = ['-'.join(sorted(tup)) for tup in zip(df['Region1'], df['Region2'])]

输出:

代码语言:javascript
复制
    Region1 Region2  var-1  var-2 segments
0       A       B     20      3      A-B
1       A       C     30      4      A-C
2       C       A     40      5      A-C
3       B       A     50      1      A-B
4       A       B     10      2      A-B
5       B       A     20      3      A-B
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50730787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档