【问题标题】:Create subset by week pandas [duplicate]按周大熊猫创建子集[重复]
【发布时间】:2019-01-09 03:47:08
【问题描述】:

我有一个看起来像这样的 pandas 数据框:

x      |     week
___________________
234    |     40
345    |     40             
123    |     41   
155    |     41
213    |     41       
...    |     ...             
1452   |     52

我需要创建几个数据框,每个数据框只包含一周

第 40 周一个,第 41 周一个,等等。

到目前为止我已经尝试过了:

length = len(data.index)-1
firstweek=data['week'].iloc[0]
lastweek=data['week'].iloc[length]
df = {}
for i in range (firstweek,lastweek):
     df[i]= pd.DataFrame(data.query('week== i'))

【问题讨论】:

  • 到底是什么问题...代码不起作用吗?
  • 它向我发送了一个错误,即 i 未在 "df[i]=pd.DataFrame(data.query(´week==i´))" 行中定义

标签: python pandas


【解决方案1】:

您对变量 i 进行了硬编码。假设您使用的是 Python 3.6+,您可以使用 f 字符串进行字符串插值。如果您使用的是 Python 2 或更早版本的 3,则可以使用 .format 方法。

Python 3.6 +

length = len(data.index)-1
firstweek=data['week'].iloc[0]
lastweek=data['week'].iloc[length]
df = {}
for i in range (firstweek,lastweek):
     df[i]= pd.DataFrame(data.query(f'week=={i}'))

Python 2 和 3

length = len(data.index)-1
firstweek=data['week'].iloc[0]
lastweek=data['week'].iloc[length]
df = {}
for i in range (firstweek,lastweek):
     df[i]= pd.DataFrame(data.query('week=={i}'.format(i=i)))

延伸阅读:https://www.programiz.com/python-programming/string-interpolation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 2014-10-04
    • 1970-01-01
    • 2020-09-26
    • 2021-06-02
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多