<p>您也可以按如下方式进行操作:</p>
<pre><code># melt the two dimensional representation to
# a more or less onedimensional representation
df_flat= df.melt(id_vars=['Content'])
# filter out all rows which belong to empty cells
# the following is a fail-safe method, that should
# work for all datatypes you might encouter in your
# columns
df_flat= df_flat[~df_flat['value'].isna() & df_flat['value'] != 0]
df_flat= df_flat[~df_flat['value'].astype('str').str.strip().isin(['', 'nan'])]
# join the variables used per original row
df_flat.groupby(['Content']).agg({'variable': lambda ser: ', '.join(ser)})
</code></pre>
<p>输出如下:</p>
^{pr2}$
<p>给出以下输入数据:</p>
<pre><code>import pandas as pd
import io
raw="""idx Content A B C D E
0 zxy 1 2 1
1 wvu 1 2 1
2 tsr 1 2 2
3 qpo 1 1 1
4 nml 2 2
5 kji 1 1 2
6 hgf 1 2
7 edc 1 2 1 """
df= pd.read_fwf(io.StringIO(raw))
df.drop(['idx'], axis='columns', inplace=True)
</code></pre>
<p><strong>编辑:</strong>我刚刚在阅读完之后删除了<code>'idx'</code>,创建了一个类似于原始数据帧的结构,并添加了一些可以处理不同数据类型的故障保护代码(melt方法下面的两行)。如果对缺失值的实际表示方式了解得更多,代码就可以简化。在</p>