Python pandas两级字典构建dataframe
时间: 2023-03-20 16:00:35 浏览: 361
可以使用Python pandas库中的DataFrame函数将两级字典转换为DataFrame。
首先,将两级字典转换为嵌套的列表。可以使用字典推导式来完成这一步骤,例如:
```
data = { 'A': {'a': 1, 'b': 2}, 'B': {'a': 3, 'b': 4} }
nested_list = [[key, nested_key, value] for key, nested_dict in data.items() for nested_key, value in nested_dict.items()]
```
这将创建一个包含嵌套列表的`nested_list`,其中每个嵌套列表都包含两级字典中的键和值。
然后,将嵌套列表转换为DataFrame。可以指定列名,例如:
```
import pandas as pd
df = pd.DataFrame(nested_list, columns=['level_1', 'level_2', 'value'])
```
这将创建一个名为`df`的DataFrame,其中包含两个索引列和一个值列。
相关问题
python pandas 两个字典合并
可以使用pandas的merge函数将两个字典合并。
示例代码如下:
```python
import pandas as pd
dict1 = {'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie']}
dict2 = {'id': [1, 2, 4], 'age': [25, 30, 35]}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
merged_df = pd.merge(df1, df2, on='id', how='outer')
print(merged_df)
```
输出结果如下:
```
id name age
0 1 Alice 25.0
1 2 Bob 30.0
2 3 Charlie NaN
3 4 NaN 35.0
```
在这个例子中,我们有两个字典dict1和dict2,其中dict1包含id和name列,而dict2包含id和age列。我们使用DataFrame将它们转换为数据框df1和df2,然后使用merge函数将它们合并。我们指定了on='id',这意味着我们要根据id列将它们合并。我们还指定了how='outer',这意味着我们要使用外部合并,这将在结果中包含所有的行,而不仅仅是匹配的行。最后,我们打印出合并的数据框merged_df。
python pandas dataframe转换为字典
可以使用 `to_dict()` 方法将 Pandas DataFrame 转换为字典。该方法有以下几个可选参数:
- `orient`:指定字典的排列方式,可选值为 "dict"、"list"、"series"、"split"、"records"、"index"、"columns" 或 None,默认为 "dict"。
- `into`:指定字典的类型,可选值为 dict、defaultdict、OrderedDict、Series 或 None,默认为 dict。
以下是一个示例代码:
```python
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
dictionary = df.to_dict(orient='records')
print(dictionary)
```
输出结果如下:
```
[{'A': 1, 'B': 'a'}, {'A': 2, 'B': 'b'}, {'A': 3, 'B': 'c'}]
```
其中,`orient='records'` 表示将 DataFrame 的每一行转换为一个字典,并将所有字典组成一个列表。如果不指定 `orient` 参数,默认会将每一列转换为一个字典,并将所有字典组成一个嵌套字典。
阅读全文