擅长:python、mysql、java
<p>下面是一个使用<code>MultiIndex</code>、<code>stack()</code>和<code>merge()</code>的方法:</p>
<pre><code>import pandas as pd
df = pd.DataFrame(data={"CommonIdentifier":[1234,1235,1236,1237],
"CommonValue":["type1","type2","type1","type1"],
"Identifier1":["a","a","b","b"],
"Value1":[1,1.5,2,1.3],
"Identifier2":["b","b","c","a"],
"Value2":[4,2,3.2,1]})
common_columns = ["CommonIdentifier", "CommonValue"]
identifier_columns = ["Identifier1", "Identifier2"]
value_columns = ["Value1", "Value2"]
common_df = df[common_columns]
mix_df = df[identifier_columns + value_columns]
mix_df.columns = pd.MultiIndex.from_product([["Identifier", "Value"], range(len(identifier_columns))])
pd.merge(common_df, mix_df.stack().reset_index(level=1, drop=True),
left_index=True, right_index=True).reset_index(drop=True)
</code></pre>