【问题标题】:Melting a pandas dataframe融化熊猫数据框
【发布时间】:2017-09-03 03:57:50
【问题描述】:

我有一个这样的数据框

    NSW     VIC
0   6718023 5023203
1   6735528 5048207
2   6742690 5061266
3   6766133 5083593
4   6786160 5103965

我想这样改

0   6718023  NSW
1   6735528  NSW
2   6742690  NSW
3   6766133  NSW
4   6786160  NSW
5   5023203  VIC
6   5048207  VIC
7   5061266  VIC
8   5083593  VIC
9   5103965  VIC

我怎样才能完成这项工作?

【问题讨论】:

  • 经典融题!

标签: python pandas dataframe


【解决方案1】:

使用melt

 pd.melt(df)
    Out[318]: 
      variable    value
    0      NSW  6718023
    1      NSW  6735528
    2      NSW  6742690
    3      NSW  6766133
    4      NSW  6786160
    5      VIC  5023203
    6      VIC  5048207
    7      VIC  5061266
    8      VIC  5083593
    9      VIC  5103965

【讨论】:

  • 祝你圣诞快乐!并感谢您的所有支持,小预设 (+5)。祝你好运!
  • @jezrael 节日快乐:-)
【解决方案2】:
df.stack().reset_index(level=0, drop=True).sort_index()

输出:

NSW    6718023
NSW    6735528
NSW    6742690
NSW    6766133
NSW    6786160
VIC    5023203
VIC    5048207
VIC    5061266
VIC    5083593
VIC    5103965
dtype: int64

【讨论】:

    【解决方案3】:

    使用df.unstack

    df = df.unstack().to_frame().reset_index(level=0).iloc[:, [-1, 0]]
    df.columns = [0, 1]   # or whatever else you please
    df
    
             0    1
    0  6718023  NSW
    1  6735528  NSW
    2  6742690  NSW
    3  6766133  NSW
    4  6786160  NSW
    0  5023203  VIC
    1  5048207  VIC
    2  5061266  VIC
    3  5083593  VIC
    4  5103965  VIC
    

    【讨论】:

      【解决方案4】:

      FOMO

      pd.DataFrame(dict(
          value=df.values.ravel(order='F'),
          variable=df.columns.repeat(len(df))
      ))
      
           value variable
      0  6718023      NSW
      1  6735528      NSW
      2  6742690      NSW
      3  6766133      NSW
      4  6786160      NSW
      5  5023203      VIC
      6  5048207      VIC
      7  5061266      VIC
      8  5083593      VIC
      9  5103965      VIC
      

      【讨论】:

      • 为了完整起见,您可以添加.sort_values('variable')
      • 应该是重复的,而不是平铺的。无需排序 (-:
      猜你喜欢
      • 2021-10-27
      • 2018-06-21
      相关资源
      最近更新 更多