<p>解决这个问题的一种方法是使用<code>pd.MultiIndex</code>和{<cd2>}。在</p>
<p>您可以添加一个由井标识符和变量名组成的多重索引。如果您有<code>df</code>:</p>
<pre><code> N1_a N1_b N2_a N2_b
1 2 2 3 4
2 7 8 9 10
</code></pre>
<p>您可以使用<code>df.columns.str.split('_', expand=True)</code>来解析好标识符对应的变量名(即<code>a</code>或{<cd6>})。在</p>
^{pr2}$
<p>返回:</p>
<pre><code> N1 N2
a b a b
0 2 2 3 4
1 7 8 9 10
</code></pre>
<p>然后您可以转置数据帧和<code>groupby</code>多索引级别0。在</p>
<pre><code>grouped = df.T.groupby(level=0)
</code></pre>
<p>要返回未转换的子数据帧列表,可以使用:</p>
<pre><code>wells = [group.T for _, group in grouped]
</code></pre>
<p>其中<code>wells[0]</code>是:</p>
<pre><code> N1
a b
0 2 2
1 7 8
</code></pre>
<p>而<code>wells[1]</code>是:</p>
<pre><code> N2
a b
0 3 4
1 9 10
</code></pre>
<p>最后一步是相当不必要的,因为可以从分组对象<code>grouped</code>访问数据。在</p>
<p>总而言之:</p>
<pre><code>import pandas as pd
from io import StringIO
data = """
N1_a,N1_b,N2_a,N2_b
1,2,2,3,4
2,7,8,9,10
"""
df = pd.read_csv(StringIO(data))
# Parse Column names to add well name to multiindex level
df = pd.DataFrame(df.values, columns=df.columns.str.split('_', expand=True)).sort_index(1)
# Group by well name
grouped = df.T.groupby(level=0)
#bulist list of sub dataframes
wells = [group.T for _, group in grouped]
</code></pre>