Python 列合并

标签 python pandas

例如假设我有两列 A 和 B

A  B
1  2
2  3
3  4
4  5

而且,我想将上面的 pandas 数据框转换为下面的示例。我尝试了 merge 但我得到了重复的值。

A_X B_X       A_Y  B_Y

1    2         2     3
1    2         3     4
1    2         4     5
2    3         3     4
2    3         4     5
3    4         4     5

最佳答案

IIUC,你可以试试:

df.assign(key=1).merge(df.assign(key=1), on='key')\
  .query('A_x != A_y and B_x != B_y').drop('key', axis=1)

输出:

    A_x  B_x  A_y  B_y
1     1    2    2    3
2     1    2    3    4
3     1    2    4    5
4     2    3    1    2
6     2    3    3    4
7     2    3    4    5
8     3    4    1    2
9     3    4    2    3
11    3    4    4    5
12    4    5    1    2
13    4    5    2    3
14    4    5    3    4

或者进一步过滤使用不等式:

df.assign(key=1).merge(df.assign(key=1), on='key')\
  .query('A_x < A_y and B_x < B_y').drop('key', axis=1)

输出:

    A_x  B_x  A_y  B_y
1     1    2    2    3
2     1    2    3    4
3     1    2    4    5
6     2    3    3    4
7     2    3    4    5
11    3    4    4    5

详细信息:

分配一个伪键并使用merge“自连接”以创建笛卡尔积 然后使用query 过滤结果并drop 键。

关于Python 列合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58311081/

相关文章:

python - 在 scikit-learn SVM 中缩放数据

python - 为什么我应该使用整数而不是 float ?

python - 将 Python NumPy 数组插入 PostgreSQL 数据库

python - Pandas 不删除重复项

python - 如何更改 python 3 pandas.DataFrame 的表形式?

python - 使用正则表达式从以某些字符开头的列中删除子字符串

python - 如何从 python 脚本中设置 linux "hcitool lecup"?

python - 如何使用 SWIG 访问嵌套的 union 成员?

python - Pandas diff SeriesGroupBy 比较慢

python - 将 JSON 读入 Python/Pandas - 获取 JSONDecodeError