在 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
我有一个 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