Python Pandas - 使用 concat() 获取两个 DataFrame 之间的公共行

要获取两个 DataFrame 之间的公共行,请使用该concat()函数。让我们用两列创建 DataFrame1 -

dataFrame1 = pd.DataFrame(

   {

      "Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],

      "Reg_Price": [1000, 1500, 1100, 800, 1100, 900] }

)

创建具有两列的 DataFrame2 -

dataFrame2 = pd.DataFrame(

   {

"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],

"Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]

}

)

查找两个 DataFrame 之间的公共行concat()-

dfRes = pd.concat([dataFrame1, dataFrame2])

重置索引 -

dfRes = dfRes.reset_index(drop=True)

分组列 -

dfGroup = dfRes.groupby(list(dfRes.columns))

获取每行的长度以计算计数。如果计数大于 1,那将意味着公共行 -

res = [k[0] for k in dfGroup.groups.values() if len(k) > 1]

示例

以下是代码 -

import pandas as pd

# 创建 DataFrame1

dataFrame1 = pd.DataFrame(

{

"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],

"Reg_Price": [1000, 1500, 1100, 800, 1100, 900] }

)

print"DataFrame1 ...\n",dataFrame1

# 创建 DataFrame2

dataFrame2 = pd.DataFrame(

{

"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],

"Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]

}

)

print"\nDataFrame2 ...\n",dataFrame2

# 查找两个 DataFrame 之间的公共行

dfRes = pd.concat([dataFrame1, dataFrame2])

# 重置索引

dfRes = dfRes.reset_index(drop=True)

# 分组列

dfGroup = dfRes.groupby(list(dfRes.columns))

# 每行的长度来计算计数

# 如果计数大于 1,那将意味着公共行

res = [k[0] for k in dfGroup.groups.values() if len(k) > 1]

print"\nCommon rows...\n",dfRes.reindex(res)

输出结果

这将产生以下输出 -

DataFrame1 ...

       Car   Reg_Price

0      BMW        1000

1    Lexus        1500

2     Audi        1100

3    Tesla         800

4  Bentley        1100

5   Jaguar         900

DataFrame2 ...

       Car   Reg_Price

0      BMW        1200

1    Lexus        1500

2     Audi        1000

3    Tesla         800

4  Bentley        1100

5   Jaguar        1000

Common rows...

       Car   Reg_Price

3    Tesla         800

1    Lexus        1500

4  Bentley        1100

以上是 Python Pandas - 使用 concat() 获取两个 DataFrame 之间的公共行 的全部内容, 来源链接: utcz.com/z/327451.html

回到顶部