交叉联接/合并dataframe1以基于dataframe1中的列创建组合的dataframe2

编码旋钮

这是一个类似的问题:交叉联接/合并以创建组合的数据框(顺序无关紧要)

df = pd.DataFrame({'zone2': ['IL', 'IL-1', 'IL-3', 'IL'], 
                   'city': ['Chicago', 'St.Louis', 'Monmouth', 'DesMoines'],
                   'zone1': ['Mid', 'Mid', 'Mid', 'Mid']})

我想创建column = city的所有组合的第二个数据框。

这就是我的方法,但是必须有一种有效的方法以更少的步骤来完成此操作。

df2 = pd.DataFrame(list(itertools.combinations(list(df['city']), 2)))
df2.columns = ['city_1', 'city_2']
df2 = df2.merge(df, left_on='city_1', right_on='city').merge(df, left_on='city_2', right_on='city', suffixes=('_x', '_y'))
df2.drop(['city_x', 'city_y'], axis=1, inplace=True)
>>> df2

     city_1     city_2 zone1_x zone2_x zone1_y zone2_y
0   Chicago   St.Louis     Mid      IL     Mid    IL-1
1   Chicago   Monmouth     Mid      IL     Mid    IL-3
2  St.Louis   Monmouth     Mid    IL-1     Mid    IL-3
3   Chicago  DesMoines     Mid      IL     Mid      IL
4  St.Louis  DesMoines     Mid    IL-1     Mid      IL
5  Monmouth  DesMoines     Mid    IL-3     Mid      IL>
亚力山大
from itertools import combinations

>>> pd.DataFrame(
        (pair[0] + pair[1] 
         for pair in (df.loc[df.city == a].values.tolist() + 
                      df.loc[df.city == b].values.tolist() 
         for a, b in combinations(df.city.unique(), 2))), 
         columns=df.columns.tolist()+[c+"_2" for c in df])
       city zone1 zone2     city_2 zone1_2 zone2_2
0   Chicago   Mid    IL   St.Louis     Mid    IL-1
1   Chicago   Mid    IL   Monmouth     Mid    IL-3
2   Chicago   Mid    IL  DesMoines     Mid      IL
3  St.Louis   Mid  IL-1   Monmouth     Mid    IL-3
4  St.Louis   Mid  IL-1  DesMoines     Mid      IL
5  Monmouth   Mid  IL-3  DesMoines     Mid      IL

您也可以尝试以下方法:

pairs = ((a, b) for a, b in combinations(df.index, 2))

>>> pd.DataFrame({
        'city_1': df.ix[p[0], 'city'],
        'city_2': df.ix[p[1], 'city'],
        'zone1_1': df.ix[p[0], 'zone1'],
        'zone1_2': df.ix[p[1], 'zone1'],
        'zone2_1': df.ix[p[0], 'zone2'],
        'zone2_2': df.ix[p[1], 'zone2']} for p in pairs)

     city_1     city_2 zone1_1 zone1_2 zone2_1 zone2_2
0   Chicago   St.Louis     Mid     Mid      IL    IL-1
1   Chicago   Monmouth     Mid     Mid      IL    IL-3
2   Chicago  DesMoines     Mid     Mid      IL      IL
3  St.Louis   Monmouth     Mid     Mid    IL-1    IL-3
4  St.Louis  DesMoines     Mid     Mid    IL-1      IL
5  Monmouth  DesMoines     Mid     Mid    IL-3      IL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

交叉连接/合并dataframe1以基于dataframe1中的列创建组合的dataframe2

来自分类Dev

合并熊猫数据框;将DataFrame2的行插入变量DataFrame1的行/列

来自分类Dev

使用现有的列标题将Dataframe1行合并到Dataframe2中-Python Pandas

来自分类Dev

Python Pandas-根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列相除

来自分类Dev

熊猫,搜索dataframe1的哪些列值在dataframe2的列中以及哪一行

来自分类Dev

验证Dataframe2中是否存在Dataframe1的所有行

来自分类Dev

熊猫将DataFrame2 ROW附加到DataFrame1 ROW

来自分类Dev

使用dataframe2中的值过滤dataframe1并在Python中的特定行值之后选择dataframe 1中的所有行

来自分类Dev

使用dataframe2中的值过滤dataframe1,并在Python中的特定行值之后选择dataframe 1中的所有行

来自分类Dev

stringdist_semi_join仅显示dataframe1中的列

来自分类Dev

如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

来自分类Dev

从词典字典中创建具有1列的DataFrame

来自分类Dev

计算Spark Dataframe中的新列,并使用pyspark将df1中的令牌列表列与df2中的文本列交叉

来自分类Dev

Pandas - 基于特定列的值在 DataFrame 中创建单独的列

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

来自分类Dev

基于过滤器在Pandas DataFrame中创建新列

来自分类Dev

在pandas DataFrame中为列中的每个类别创建单独的交叉表

来自分类Dev

基于DataFrame列的操作

来自分类Dev

关于DataFrame 1维错误的Pandas交叉表

来自分类Dev

基于 Pandas.Dataframe 中的多列合并多个重复行

来自分类Dev

如何基于存储在列中的字符在R Dataframe中创建列?

来自分类Dev

如何基于Python Pandas中的其他列在DataFrame中创建新列?

来自分类Dev

DataFrame:基于另一列中的单词创建新列

来自分类Dev

创建1个xn pandas DataFrame

来自分类Dev

将 DataFrame 与数组列组合

来自分类Dev

如何基于一组行在Pandas DataFrame中创建新列

来自分类Dev

dataframe [,-1]和dataframe [-1]是否相同?

来自分类Dev

熊猫DataFrame合并求和列

来自分类Dev

合并Pandas DataFrame DateTime列

Related 相关文章

  1. 1

    交叉连接/合并dataframe1以基于dataframe1中的列创建组合的dataframe2

  2. 2

    合并熊猫数据框;将DataFrame2的行插入变量DataFrame1的行/列

  3. 3

    使用现有的列标题将Dataframe1行合并到Dataframe2中-Python Pandas

  4. 4

    Python Pandas-根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列相除

  5. 5

    熊猫,搜索dataframe1的哪些列值在dataframe2的列中以及哪一行

  6. 6

    验证Dataframe2中是否存在Dataframe1的所有行

  7. 7

    熊猫将DataFrame2 ROW附加到DataFrame1 ROW

  8. 8

    使用dataframe2中的值过滤dataframe1并在Python中的特定行值之后选择dataframe 1中的所有行

  9. 9

    使用dataframe2中的值过滤dataframe1,并在Python中的特定行值之后选择dataframe 1中的所有行

  10. 10

    stringdist_semi_join仅显示dataframe1中的列

  11. 11

    如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

  12. 12

    从词典字典中创建具有1列的DataFrame

  13. 13

    计算Spark Dataframe中的新列,并使用pyspark将df1中的令牌列表列与df2中的文本列交叉

  14. 14

    Pandas - 基于特定列的值在 DataFrame 中创建单独的列

  15. 15

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

  16. 16

    基于过滤器在Pandas DataFrame中创建新列

  17. 17

    在pandas DataFrame中为列中的每个类别创建单独的交叉表

  18. 18

    基于DataFrame列的操作

  19. 19

    关于DataFrame 1维错误的Pandas交叉表

  20. 20

    基于 Pandas.Dataframe 中的多列合并多个重复行

  21. 21

    如何基于存储在列中的字符在R Dataframe中创建列?

  22. 22

    如何基于Python Pandas中的其他列在DataFrame中创建新列?

  23. 23

    DataFrame:基于另一列中的单词创建新列

  24. 24

    创建1个xn pandas DataFrame

  25. 25

    将 DataFrame 与数组列组合

  26. 26

    如何基于一组行在Pandas DataFrame中创建新列

  27. 27

    dataframe [,-1]和dataframe [-1]是否相同?

  28. 28

    熊猫DataFrame合并求和列

  29. 29

    合并Pandas DataFrame DateTime列

热门标签

归档