可樂 | COL_B | COL_C |
---|---|---|
PRODUCT_1 | 英國 | 2021 年 1 月 1 日 |
我想要一個包含結果的表
可樂 | COL_B | COL_C | COL_A_COL_B_COL_C | COL_A_COL_B | COL_A_COL_C | COL_B_COL_C |
---|---|---|---|---|---|---|
PRODUCT_1 | 英國 | 2021 年 1 月 1 日 | PRODUCT_1UK1/1/2021 | PRODUCT_1UK | PRODUCT_2021 年 11 月 1 日 | 英國1/1/2021 |
基本上,組合從左到右連接,并將它們作為新列放置在資料集中。
我不需要所有的組合,例如,如果連接了 ABC 列,這對那個組合就足夠了(不需要 BCA 或 ACB)。
你如何在 Python3 中使用 itertools 和 pandas 做到這一點?真實表包含 10 多列來獲取它們的組合。
uj5u.com熱心網友回復:
您可以使用pandas.concat
:
from itertools import combinations
df.join(pd.concat({a '_' b: df[a] df[b] for a,b in combinations(df, 2)}, axis=1))
輸出:
COL_A COL_B COL_C COL_A_COL_B COL_A_COL_C COL_B_COL_C
0 PRODUCT_1 UK 1/1/2021 PRODUCT_1UK PRODUCT_11/1/2021 UK1/1/2021
多種組合:
from itertools import combinations
df.join(pd.concat({'_'.join(x): df[x[0]].str.cat(df[list(x[1:])].astype(str),
sep='')
for i in (2, 3)
for x in combinations(df, i)}, axis=1))
輸出:
COL_A COL_B COL_C COL_A_COL_B COL_A_COL_C COL_B_COL_C \
0 PRODUCT_1 UK 1/1/2021 PRODUCT_1UK PRODUCT_11/1/2021 UK1/1/2021
COL_A_COL_B_COL_C
0 PRODUCT_1UK1/1/2021
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488327.html
標籤:python-3.x 熊猫 数据框 迭代工具