
在 Pandas DataFrame 中,经常需要在排序后插入一行字符串作为标题或说明。直接将字符串添加到数值列会导致排序错误,因为列的数据类型会变成字符串。为了解决这个问题,我们可以先对 DataFrame 进行排序,然后创建一个新的 DataFrame 包含字符串行,最后将两个 DataFrame 合并。
以下是详细步骤和示例代码:
首先,创建一个包含数值数据的 DataFrame。
import pandas as pd
data = {'metricID': ['A', 'B', 'C', 'D'],
'consumo': [10.5, 5.2, 8.9, 12.1]}
df = pd.DataFrame(data)
print(df)输出:
metricID consumo 0 A 10.5 1 B 5.2 2 C 8.9 3 D 12.1
使用 sort_values() 方法对 consumo 列进行降序排序。
df = df.sort_values('consumo', ascending=False)
print(df)输出:
metricID consumo 3 D 12.1 0 A 10.5 2 C 8.9 1 B 5.2
创建一个新的 DataFrame,包含要添加到顶部的字符串数据。
new_row = pd.DataFrame({'metricID': 'Data frame', 'consumo': 'from:2022-12-01 00:00:00 to:2022-12-14 16:13:00'}, index=[0])
print(new_row)输出:
metricID consumo 0 Data frame from:2022-12-01 00:00:00 to:2022-12-14 16:13:00
使用 pd.concat() 函数将新创建的 DataFrame 与排序后的 DataFrame 合并。 reset_index(drop=True) 用于重置索引,避免索引重复。
df = pd.concat([new_row, df]).reset_index(drop=True) print(df)
输出:
metricID consumo 0 Data frame from:2022-12-01 00:00:00 to:2022-12-14 16:13:00 1 D 12.1 2 A 10.5 3 C 8.9 4 B 5.2
将以上步骤整合到一个函数中,方便重复使用。
import pandas as pd
def create_excel_with_header(data, header_data, sort_column='consumo', ascending=False):
"""
创建一个包含排序数据和头部字符串行的 DataFrame。
Args:
data (dict): 包含数据的字典,用于创建 DataFrame。
header_data (dict): 包含头部数据的字典,用于创建头部 DataFrame。
sort_column (str): 用于排序的列名,默认为 'consumo'。
ascending (bool): 排序方式,True 为升序,False 为降序,默认为 False。
Returns:
pandas.DataFrame: 合并后的 DataFrame。
"""
df = pd.DataFrame(data)
df = df.sort_values(sort_column, ascending=ascending)
new_row = pd.DataFrame(header_data, index=[0])
df = pd.concat([new_row, df]).reset_index(drop=True)
return df
# 示例数据
data = {'metricID': ['A', 'B', 'C', 'D'],
'consumo': [10.5, 5.2, 8.9, 12.1]}
header_data = {'metricID': 'Data frame', 'consumo': 'from:2022-12-01 00:00:00 to:2022-12-14 16:13:00'}
# 创建 DataFrame
final_df = create_excel_with_header(data, header_data)
print(final_df)
# 如果需要导出到 Excel
# final_df.to_excel('output.xlsx', index=False)通过以上步骤,我们可以在 Pandas DataFrame 中对数值列进行排序,并在排序后的 DataFrame 顶部添加包含字符串数据的新行。这种方法可以灵活地用于创建包含标题或说明的 Excel 表格或其他数据分析任务。pd.concat() 函数是实现这一目标的关键。
以上就是在 Pandas DataFrame 中排序并添加字符串行的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号