在 pandas DataFrame 中加载三元组格式的数据

Loading triplet formatted data in pandas DataFrame

我有一个 csv 文件,格式如下:

email       Peter    peter@example.com
id          Peter    23
age         John     31
fullname    John     John Smith
id          John     25

即第一个字段是键名,第二个是索引值,第三个是数据值。但是我前面没有所有键名的列表。

从这些数据中创建 DataFrame 对象的最有效方法是什么?

更新:格式允许丢失数据,即本例中 John 的电子邮件是 NaN。

根据您希望如何获得最终数据框,您可以为此使用 pivot

In [1]: s = """email       Peter    peter@example.com
   ...: id          Peter    23
   ...: age         John     31
   ...: fullname    John     John Smith
   ...: id          John     25"""

In [4]: df = pd.read_fwf(StringIO(s), names=["key", "name", "value"])

In [5]: df
Out[5]:
        key   name              value
0     email  Peter  peter@example.com
1        id  Peter                 23
2       age   John                 31
3  fullname   John         John Smith
4        id   John                 25

In [6]: df.pivot(index='name', columns='key', values='value')
Out[6]:
key    age              email    fullname  id
name
John    31                NaN  John Smith  25
Peter  NaN  peter@example.com         NaN  23