通过外部联接将大熊猫数据框与列表合并

时间:2018-09-11 13:59:49

标签: python pandas list

我有一个看起来如下的数据框

   A  B
0  1  4
1  2  5
2  3  6

和一个列表

names = ['x','y']

我想获得一种数据表现形式,并与该列表进行外部联接。理想的结果是:

   A  B  name
0  1  4  x
1  1  4  y
2  2  5  x
3  2  5  y
4  3  6  x
5  3  6  y

3 个答案:

答案 0 :(得分:4)

使用pd.concat

$(function() {

    function selectElementContents(el) {
        var range = document.createRange();
        range.selectNodeContents(el);
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
    };

    function copyToClipboard(data) {
        function listener(e) {
            e.clipboardData.setData("text/html", data);
            e.clipboardData.setData("text/plain", data);
            e.preventDefault();
        }

        document.addEventListener("copy", listener);
        document.execCommand("copy");
        document.removeEventListener("copy", listener);
    };

    function copyHtmlToClipboard() {
        var dataHtmlElement = document.getElementById("data");

        dataHtmlElement.contentEditable = true;
        dataHtmlElement.readOnly = false;

        selectElementContents(dataHtmlElement);
        copyToClipboard(dataHtmlElement.innerHTML);

        dataHtmlElement.contentEditable = false;
        dataHtmlElement.readOnly = true;

        window.getSelection().removeAllRanges();
    };


    var button = $("button")
    button.on("click", copyHtmlToClipboard)

});

结果:

res = pd.concat([df.assign(name=i) for i in names], ignore_index=True)

答案 1 :(得分:1)

merge使用附加密钥

df.assign(key=1).merge(pd.DataFrame({'Name':names,'key':1})).drop('key',1)
Out[54]: 
   A  B Name
0  1  4    x
1  1  4    y
2  2  5    x
3  2  5    y
4  3  6    x
5  3  6    y

答案 2 :(得分:1)

理解力

pd.DataFrame(
    [r + (n,) for r in zip(*map(df.get, df)) for n in names],
    columns=[*df.columns, *['name']]
)

   A  B name
0  1  4    x
1  1  4    y
2  2  5    x
3  2  5    y
4  3  6    x
5  3  6    y