【问题标题】:I need to show all of columns of dataframe我需要显示数据框的所有列
【发布时间】:2021-10-13 22:00:13
【问题描述】:

enter link description here

这里是表格的链接。

编写 Python 代码,从网站上抓取第一个表,将其转换为 pandas 数据框。作为第 1 部分的输出,创建一个名为 dams 的子集,其中包含根据水力发电能力排名前 3 位的大坝的所有数据。

这是我的代码。

 import pandas as pd
url = "dams.html"
table = pd.read_html (url,header=0)[0]
table

dams = table.groupby('Name').sum()
dams = dams.sort_values('Installed capacity [MW]',ascending = False)[:3]
dams

#我要显示原始表格的所有列。

这是我的问题: DataFrame 形状不匹配 [左]: (3, 4) [右]: (3, 9)

感谢您的帮助

【问题讨论】:

  • ** 这是你的意思吗?** dams = table.groupby('Name').sum() dams = dams.sort_values('装机容量[MW]',ascending = False)[ :3] pd.options.display.max_columns = 无 pd.options.display.max_rows = 无 dams.head()
  • 是的。它不起作用?
  • 对不起,我是新手,看不懂。你能详细解释一下吗?
  • 不工作。还显示“形状不匹配”。

标签: python pandas dataframe sorting pandas-groupby


【解决方案1】:

问题是因为你在 'sum' 上做了 groupby,所以只有带数字的列才会出现在 dams 中

Type、Country等其他列不能出现,因为它们不是数值,不能求和

如果你真的想显示所有列,你可以用 count 代替 sum。

【讨论】:

  • 但出现了新问题。 “名称”也是原始表的列。如果我使用'groupby()'函数。 “名称”列将被锁定。还返回“形状不匹配”。
  • 需要的结果是 (3,9)。缺少名称列,形状为 (3,8)。
  • 原因是名称列变成了索引。试试下面的: dams = table.groupby('Name', as_index=False).sum()
  • 还有,老师要我们找到TOP3的大坝。如果我用.count()替换.sum(),结果不正确。
  • 一开始你不需要做groupby。对于第一个表,只需执行 sortby : table.sort_values(by='Installed capacity [MW]', ascending=False).head(3)
猜你喜欢
  • 2019-06-12
  • 2020-08-18
  • 1970-01-01
  • 2021-01-16
  • 2021-06-13
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多