如何在Pandas中根据列标题和内容创建并填充DataFrame的行与列
Pandas宽表转长表:将列标题转为Date列,单元格值转为Value列
这正是Pandas里melt()函数的典型应用场景,直接用它就能快速实现你要的格式转换:
import pandas as pd # 构造你提供的原始DataFrame df = pd.DataFrame({ 'Location': ['A', 'B'], 'Jan-22': [1, 4], 'Feb-22': [2, 5], 'Mar-22': [3, 6] }) # 使用melt完成格式转换 long_df = df.melt( id_vars=['Location'], # 指定不需要转换、保持原样的列 var_name='Date', # 原列标题会作为这个新列的取值 value_name='Value' # 原单元格的数值会放到这个新列里 ) # 如果需要和你示例里的排序完全一致,可添加排序步骤 long_df = long_df.sort_values('Location').reset_index(drop=True) print(long_df)
运行后得到的结果如下:
| Location | Date | Value |
|---|---|---|
| A | Jan-22 | 1 |
| A | Feb-22 | 2 |
| A | Mar-22 | 3 |
| B | Jan-22 | 4 |
| B | Feb-22 | 5 |
| B | Mar-22 | 6 |
内容的提问来源于stack exchange,提问作者Graham Galloway
相关产品推荐
相关产品推荐

