类型错误:无法连接 '<class 'str'>' 类型的对象;仅 Series 和 DataFrame 对象有效

use*_*120 6 python dataframe pandas

我的数据称为 car_A :

    Source
0   CAULAINCOURT
1   MARCHE DE L'EUROPE
2   AU MAIRE
Run Code Online (Sandbox Code Playgroud)

我想从源到目的地的所有路径中找到类似的内容:


    Source                    Destination
0 CAULAINCOURT           MARCHE  DE L'EUROPE
2 CAULAINCOURT                AU MAIRE
3 MARCHE DE L'EUROPE        AU MAIRE
.
.
.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了

for i in car_A['Names']:
  for j in range(len(car_A)-1):
    car_A = car_A.append(car_A.iloc[j+1,0])
Run Code Online (Sandbox Code Playgroud)

但我得到了

TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
Run Code Online (Sandbox Code Playgroud)

我如何获得提到的数据集?

raj*_*ah9 5

@James 的好答案有一个小小的变化。itertools.permutations为您删除重复项。

import pandas as pd
from itertools import permutations

df = pd.DataFrame({'sources': [
    "CAULAINCOURT",
    "MARCHE DE L'EUROPE",
    "AU MAIRE"
]})

df_pairs = pd.DataFrame(
    [x for x in permutations(df.sources, 2)],
    columns=['source', 'dest'])

df_pairs
# returns
               source                dest
0        CAULAINCOURT  MARCHE DE L'EUROPE
1        CAULAINCOURT            AU MAIRE
2  MARCHE DE L'EUROPE        CAULAINCOURT
3  MARCHE DE L'EUROPE            AU MAIRE
4            AU MAIRE        CAULAINCOURT
5            AU MAIRE  MARCHE DE L'EUROPE
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 1

您可以使用itertools.product构建所有对的集合,当源和目标位于同一位置时进行过滤以删除,然后构建一个新的数据框。

import pandas as pd
from itertools import product

df = pd.DataFrame({'sources': [
    "CAULAINCOURT",
    "MARCHE DE L'EUROPE",
    "AU MAIRE"
]})

df_pairs = pd.DataFrame(
    filter(lambda x: x[0]!=x[1], product(df.sources, df.sources)), 
    columns=['source', 'dest']
)

df_pairs
# returns:
               source                dest
0        CAULAINCOURT  MARCHE DE L'EUROPE
1        CAULAINCOURT            AU MAIRE
2  MARCHE DE L'EUROPE        CAULAINCOURT
3  MARCHE DE L'EUROPE            AU MAIRE
4            AU MAIRE        CAULAINCOURT
5            AU MAIRE  MARCHE DE L'EUROPE


Run Code Online (Sandbox Code Playgroud)