2017-09-24 91 views
-1

我想从网页上刮表。该网页包含表格中数据的链接。基本上,我正在写一个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 有没有简单的方法来做到这一点?

+0

你使用Python还是R?你的问题应该*不*使用两个标签。在提出问题之前,还请提供自己尝试自行完成此操作的代码(或暂时删除该问题,直到您处于此位置)。是的...有两种语言都可以轻松实现,您可以通过搜索轻松找到... –

+0

任何一种语言都适合我。 Python是首选。 @ Hack-R我试过在python中做'df.T'的转置,但是我没有想到如何转置所有的数据点 –

+0

我知道你是新的,所以我试图帮助你理解我们允许的各种问题。在您提出问题之前,您应该已经编写了代码。这不是一个代码写入服务。你应该知道你是否使用Python或R.你还需要研究现有的问题/答案,所以你可以找到如何转置表的明显答案... –

回答

1

答案(对于Python)的素描是:

  • 将数据读入一个pandas.DataFrame
  • df.unstack()你得到的表格,您正在寻找
+0

谢谢。有效 –

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是dataf你正在从中转换。

相关问题