【问题标题】:Pandas Dataframe Transformation, looking for elegant solutionPandas Dataframe Transformation,寻找优雅的解决方案
【发布时间】:2021-07-23 08:38:43
【问题描述】:

我有一个名为 t1 的数据框。我需要从t1 获取 2008 年的数据,所以我尝试了这个:

t08= t1[t1['time'].str.startswith('2008')]
t08.reset_index(drop=True, inplace=True)
t08 = t08[['time','temperature']]

之后我需要t08 成为数据框。根据警告,目前情况并非如此。对我有用的一种非常不雅的方式是:

t08.to_csv(r'C:\...\generic\zw4.csv')
t2_08 = pd.read_csv(r'C:\...\generic\zw4.csv')

所以现在 pandas 将 t2_08 识别为数据框。但有什么更优雅的方式来做到这一点?

谢谢

【问题讨论】:

  • 如果你能分享你的 t1 数据框的样本,基本上是可用的列等来帮助,这将是有帮助的
  • 我假设一个简单的pd.DataFrame(t08) 不起作用?
  • 1.是的,当然......你会发现这里的 t1 叫做 'ninjatemp.csv' github.com/JulianLeGrid/Bach 2. pd.DataFrame(t08) 不起作用
  • 如果不是数据框,你检查过它是什么类型的对象吗?在去掉“时间”和“温度”这两列之前,它是一个数据框吗?您是否尝试过不使用 inplace=True,而只是将新数据帧分配给 t08?
  • 我完全按照您的第一个代码执行并使用了您链接到的数据框。我没有错误,结果是一个数据框。

标签: python pandas dataframe


【解决方案1】:

你可以做t08.to_csv 的事实是它可能是一个DataFrame

t1 = pd.read_csv('https://github.com/JulianLeGrid/Bach/blob/main/ninjatemp.csv?raw=true')
t08 = t1[t1['time'].str.startswith('2008')]
t08.reset_index(drop=True, inplace=True)
t08 = t08[['time','temperature']]
assert isinstance(t08, pd.DataFrame)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多