文章目录
- 前言
- 一、()
- 二、.from_dict()
- 2.1 参数解释
- 2.1.1 orient='columns'(默认)
- 2.1.2 orient='index'
- 三.append()方法将字典转换为 DataFrame 行(但不推荐使用)
- 四.concat()方法将字典转换为 DataFrame 行
前言
如果只有单个字典,想要整理成DataFrame,例如:data_dict = { ‘Company’: [‘A’, ‘B’, ‘C’], ‘Revenue’: [100, 150, 200], ‘Employees’: [50, 60, 70]} 则使用.from_dict()较为方便。
如果是有多个字典,例如:data_list_of_dicts = [
{‘Company’: ‘Company A’, ‘Employees’: 120, ‘Revenue’: 1000},
{‘Company’: ‘Company B’, ‘Employees’: 80, ‘Revenue’: 800},
{‘Company’: ‘Company C’, ‘Employees’: 300, ‘Revenue’: 1500}]
则直接使用()较为方便。
一、()
例如:
import pandas as pd
# 字典列表,每个字典代表一行数据
data_list_of_dicts = [
{'Company': 'Company A', 'Employees': 120, 'Revenue': 1000},
{'Company': 'Company B', 'Employees': 80, 'Revenue': 800},
{'Company': 'Company C', 'Employees': 300, 'Revenue': 1500}
]
# 直接将字典列表转换为DataFrame
df = pd.DataFrame(data_list_of_dicts)
# 输出
Company Employees Revenue
0 Company A 120 1000
1 Company B 80 800
2 Company C 300 1500
字典列表:data_list_of_dicts变量存储了一个列表,列表中的每个元素是一个字典。每个字典包含几对键值,分别对应列名和该行数据的值。这样的数据结构非常适合表示表格数据,其中每个字典代表数据表中的一行。
DataFrame转换:使用()函数将字典列表转换为DataFrame。Pandas会自动将字典的键作为列名,字典的值作为数据填充到相应的列。
二、.from_dict()
2.1 参数解释
与方法一相比,这个方法灵活性更强。.from_dict() 可以接受两个主要的参数:
- data:这是一个字典或类似映射的对象。
- orient:指定了字典键值对应关系的方向,默认为 columns,但可以设置为 index 或其他选项。
2.1.1 orient=‘columns’(默认)
当 orient 设置为 ‘columns’ 时,字典的键被视为列名,每个键对应的值(一个数组或列表)是那一列的数据。
代码演示:
import pandas as pd
data_dict = {
'Company': ['A', 'B', 'C'],
'Revenue': [100, 150, 200],
'Employees': [50, 60, 70]
}
df = pd.DataFrame.from_dict(data_dict)
print(df)
Company Revenue Employees
0 A 100 50
1 B 150 60
2 C 200 70
2.1.2 orient=‘index’
当 orient 设置为 ‘index’ 时,字典的键被视为行标签,每个键对应的值(必须是一个字典)构成了那一行的数据。
import pandas as pd
data_dict = {
'row1': {'Company': 'A', 'Revenue': 100, 'Employees': 50},
'row2': {'Company': 'B', 'Revenue': 150, 'Employees': 60},
'row3': {'Company': 'C', 'Revenue': 200, 'Employees': 70}
}
df = pd.DataFrame.from_dict(data_dict, orient='index')
print(df)
Company Revenue Employees
row1 A 100 50
row2 B 150 60
row3 C 200 70
三.append()方法将字典转换为 DataFrame 行(但不推荐使用)
代码如下(示例):
import pandas as pd
# 创建一个空的DataFrame
df = pd.DataFrame()
# 创建一个字典,代表一行数据
data_dict = {'Company': 'Company A', 'Employees': 120, 'Revenue': 1000}
# 使用append()方法将字典添加为DataFrame的新行
df = df.append(data_dict, ignore_index=True)
# 添加更多的行
df = df.append({'Company': 'Company B', 'Employees': 80, 'Revenue': 800}, ignore_index=True)
df = df.append({'Company': 'Company C', 'Employees': 300, 'Revenue': 1500}, ignore_index=True)
# 打印DataFrame查看结果
print(df)
Company Employees Revenue
0 Company A 120 1000
1 Company B 80 800
2 Company C 300 1500
ignore_index=True, 意味着不使用data_dict中的索引。相反,Pandas会忽略它,并重新为新合并的DataFrame创建一个从0开始的数字索引。如果ignore_index设置为False(这是默认值),Pandas会尝试将data_dict中的索引与现有的DataFrame索引合并,这可能会导致索引的重复,特别是如果现有DataFrame和data_dict中的索引值有重叠的情况。
四.concat()方法将字典转换为 DataFrame 行
# 使用列表包含所有要添加的字典
import pandas as pd
data_dict = {'Column1': 'Value1', 'Column2': 'Value2', 'Column3': 'Value3'}
dict_df = pd.DataFrame([data_dict])
# Now, create an example existing DataFrame to concatenate with.
existing_df = pd.DataFrame({
'Column1': ['ExistingValue1', 'ExistingValue2'],
'Column2': ['ExistingValue3', 'ExistingValue4'],
'Column3': ['ExistingValue5', 'ExistingValue6']
})
concatenated_df = pd.concat([existing_df, dict_df], ignore_index=True)
# Display the concatenated DataFrame
concatenated_df
Column1 Column2 Column3
0 ExistingValue1 ExistingValue3 ExistingValue5
1 ExistingValue2 ExistingValue4 ExistingValue6
2 Value1 Value2 Value3
上下拼接(沿着索引拼接,即添加行):axis 参数的值应为 0 或 ‘index’(这是默认值)。ignore_index 如果设置为 True,则会重置索引。
左右拼接(沿着列拼接,即添加列):axis 参数的值应为 1 或 ‘columns’。
在这种情况下,通常不需要设置 ignore_index,因为你是在添加列,而不是在重新排列行索引。