如何创建一个新数据框,每个数据点作为一个新列?

时间:2017-09-24 16:38:18

标签: python

我正在尝试从网页上抓取表格。该网页包含表格中数据的链接。基本上,我正在编写一个for循环来从每个链接获取表并与其他表连接。为此,我需要将每个数据点转换为列。

df= 2004 | 2006 | 2007 | 2008 ------------------------ GrowthRate 5% | 7% |-5% | 5% Earnings 234 | 449 | -300 | 448 EPS 17.6 |11.8 | 16.8 | 500 P\E 14.08|12.04 |11.37 | 348

我想将其作为

df = GrowthRate_2004 GrowthRate_2006 GrowthRate_2007 GrowthRate_2008 Earnings_2004 Earnings_2006 Earnings_2007 Earnings_2008 EPS_2004 EPS_2006 EPS_2007 EPS_2008 P/E_2004 P/E_2006 P/E_2007 P/E_2008 5% 7% -5% 5% 234 449 -300 448 17.6 11.8 16.8 500 14.08 12.04 11.37 348

enter image description here 有没有简单的方法呢?

2 个答案:

答案 0 :(得分:1)

答案的草图(对于python)将是:

  • 将数据读入pandas.DataFrame
  • df.unstack(),您将获得正在寻找的表单

答案 1 :(得分:1)

也许不是那么优雅的解决方案,但有效:

df_ = pd.DataFrame(data = np.broadcast_to(df.columns.values.reshape(-1, 1).astype(str), df.shape), index = df.columns.values, columns = df.index.values)
df_ = pd.get_dummies(df_)
df_ = pd.DataFrame(data = df.values.flatten().reshape(1, -1), columns=df_.columns)
df_ = pd.DataFrame(data = np.broadcast_to(df.index.values.reshape(-1, 1), df.shape), columns = df.columns)

其中df是您要转换的数据帧。