1

所以目前我正在尝试将一个 7x2 表折叠成一个 1x14 表,并让最终数据框中的 8 列以原始列标签为前缀。我有一种感觉,我的答案就在其中,.pivot()但不知道如何到达那里。这是我到目前为止所拥有的:

原表:

              polarity  subjectivity
  count       1.0         1.0
  mean        0.0         0.0
  min         0.0         0.0
  25%         0.0         0.0
  50%         0.0         0.0
  75%         0.0         0.0
  max         0.0         0.0

我想到达这里:

  subjectivity_count    subjectivity_mean   subjectivity_min    subjectivity_25%    subjectivity_50%    subjectivity_75%    subjectivity_max    polarity_count  polarity_mean   polarity_min    polarity_25%    polarity_50%    polarity_75%    polarity_max
  0      1.0                  0.0               0.0             0.0             0.0             0.0             0.0             1.0             0.0             0.0             0.0             0.0             0.0             0.0

我能够做到这一点,但以一种非常老套的方式。我的步骤是:

1)转置原来的df,选择一行作为索引,加上列前缀

df.T.loc['subjectivity'].add_prefix('subjectivity_') 

df.T.loc['polarity'].add_prefix('polarity_')

2)使用将这些连接在一起pd.concat

3)在这个上创建一个新的pd.DataFrame构造函数并转置。

这是完成工作的一种非常丑陋的方式,而且似乎效率低下,因为我DataFrame每次都在创建一个新对象。有什么建议么?

4

1 回答 1

2

这将做你想做的事。

a = list(np.linspace(0,50))
b = list(np.linspace(0,100))
df = pd.DataFrame({'polarity':a, 'subjectivity': b})
df1 = df.describe()

df2 = df1.reset_index().melt(id_vars = ['index'], value_vars = ['polarity','subjectivity'])
df2['name'] = df2['variable'] + '_' + df2['index']
df2 = df2[['name','value']].set_index('name').transpose()

有关融化的信息,你可以去这里

于 2018-04-24T18:48:36.700 回答