Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas矢量化了一种生成组行与所有其他行的成对组合的方法_Python_Pandas - Fatal编程技术网

Python Pandas矢量化了一种生成组行与所有其他行的成对组合的方法

Python Pandas矢量化了一种生成组行与所有其他行的成对组合的方法,python,pandas,Python,Pandas,是否有一种pandas矢量化的方法来生成所有成对行组合的特定子集,如下所示:给定一组可分辨的行,我想将组中的每一行与所有其他行(即,组外行和组内行)配对。因此,如果整个集合的长度n,而长度k的组,k如果您不介意将模型与自身进行比较,则可以使用merge import pandas as pd input_df = pd.DataFrame({ "CarMaker": ["Audi", "Audi", "BMW&quo

是否有一种
pandas
矢量化的方法来生成所有成对行组合的特定子集,如下所示:给定一组可分辨的行,我想将组中的每一行与所有其他行(即,组外行和组内行)配对。因此,如果整个集合的长度
n
,而长度
k的组,k如果您不介意将模型与自身进行比较,则可以使用merge

import pandas as pd

input_df = pd.DataFrame({
    "CarMaker": ["Audi", "Audi", "BMW", "BMW", "Mercedes", "Mercedes" ],
    "Model": ["S3", "S5", "M3", "M4", "GLS", "AMG"],
    "HorsePower": [100, 110, 120, 130, 140, 150],
    "TopSpeed": [200, 210, 220, 230, 240, 250]
})

df_main = input_df[input_df["CarMaker"]=="Audi"].copy()
df_other = input_df.copy()

df_main["key"] = 0
df_other["key"] = 0

pd.merge(df_main, df_other, how="outer", on="key", suffixes=("_main", "_other")).drop("key", axis=1).sort_index(axis=1)
如果您的pandas>1.2,您可以跳过“键”把戏,只需将how=“cross”传递给pandas merge

pd.merge(df_main, df_other, how="cross", suffixes=("_main", "_other")).sort_index(axis=1)
  CarMaker_main Model_main CarMaker_other Model_other  HP_main  HP_other  TopSpeed_main  TopSpeed_other

0          Audi         S3           Audi          S5      100       110            200             210
1          Audi         S3            BMW          M3      100       120            200             220
2          Audi         S3            BMW          M4      100       130            200             230
3          Audi         S3       Mercedes         GLS      100       140            200             240
4          Audi         S3       Mercedes         AMG      100       150            200             250
5          Audi         S5            BMW          M3      110       120            210             220
6          Audi         S5            BMW          M4      110       130            210             230
7          Audi         S5       Mercedes         GLS      110       140            210             240
8          Audi         S5       Mercedes         AMG      110       150            210             250
import pandas as pd

input_df = pd.DataFrame({
    "CarMaker": ["Audi", "Audi", "BMW", "BMW", "Mercedes", "Mercedes" ],
    "Model": ["S3", "S5", "M3", "M4", "GLS", "AMG"],
    "HorsePower": [100, 110, 120, 130, 140, 150],
    "TopSpeed": [200, 210, 220, 230, 240, 250]
})

df_main = input_df[input_df["CarMaker"]=="Audi"].copy()
df_other = input_df.copy()

df_main["key"] = 0
df_other["key"] = 0

pd.merge(df_main, df_other, how="outer", on="key", suffixes=("_main", "_other")).drop("key", axis=1).sort_index(axis=1)
pd.merge(df_main, df_other, how="cross", suffixes=("_main", "_other")).sort_index(axis=1)