回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正试图找到一种方法,用Pandas同时合并多个列。通过进行五次单独的合并,我得到了想要的输出,但感觉应该有一种更具python风格的方式来实现</p>
<p>基本上,我有一个数据框,在一个名为df_的数据框中有五个关键字列,我试图将另一个数据框(称为df_关键字_vol)中的搜索卷数据合并到相邻的行中</p>
<p>最小可复制示例:</p>
<pre><code>import pandas as pd
striking_data = {
"KW1": ["nectarine", "apricot", "plum"],
"KW1 Vol": ["", "", ""],
"KW2": ["apple", "orange", "pear"],
"KW2 Vol": ["", "", ""],
"KW3": ["banana", "grapefruit", "cherry"],
"KW3 Vol": ["", "", ""],
"KW4": ["kiwi", "lemon", "peach"],
"KW4 Vol": ["", "", ""],
"KW5": ["raspberry", "blueberry", "berries"],
"KW5 Vol": ["", "", ""],
}
df_striking = pd.DataFrame(striking_data)
keyword_vol_data = {
"Keyword": [
"nectarine",
"apricot",
"plum",
"apple",
"orange",
"pear",
"banana",
"grapefruit",
"cherry",
"kiwi",
"lemon",
"peach",
"raspberry",
"blueberry",
"berries",
],
"Volume": [
1000,
500,
200,
600,
800,
1000,
450,
10,
900,
1200,
150,
700,
400,
850,
1000,
],
}
df_keyword_vol = pd.DataFrame(keyword_vol_data)
</code></pre>
<p>期望输出</p>
<p><a href="https://i.stack.imgur.com/hh57b.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/hh57b.png" alt="enter image description here"/></a></p>
<p>我试过的。
我已经做了两个函数来合并关键字数据,一次一行,但它不是很pythonic</p>
<pre><code># two functions to merge in the keyword volume data for KWs 1 - 5
def merger(col1, col2):
dx = df_striking.merge(df_keyword_vol, how='left', left_on=col1, right_on=col2)
return dx
def volume(vol1, vol2):
vol = df_striking[vol1] = df_striking[vol2]
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)
return vol
df_striking = merger("KW1", "Keyword")
volume("KW1 Vol", "Volume")
df_striking = merger("KW2", "Keyword")
volume("KW2 Vol", "Volume")
df_striking = merger("KW3", "Keyword")
volume("KW3 Vol", "Volume")
df_striking = merger("KW4", "Keyword")
volume("KW4 Vol", "Volume")
df_striking = merger("KW5", "Keyword")
volume("KW5 Vol", "Volume")
</code></pre>