我有一个看起来如下的数据框
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
答案 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