相关疑难解决方法(0)

重新取样错误:无法使用方法或限制重新索引非唯一索引

我正在使用Pandas来构建和处理数据.

我这里有一个DataFrame,日期为索引,Id和比特率.我希望按ID分组我的数据并同时重新采样,相对于每个Id的时间,最后保持比特率.

例如,给定:

df = pd.DataFrame(
{'Id' : ['CODI126640013.ts', 'CODI126622312.ts'],
'beginning_time':['2016-07-08 02:17:42', '2016-07-08 02:05:35'], 
'end_time' :['2016-07-08 02:17:55', '2016-07-08 02:26:11'],
'bitrate': ['3750000', '3750000'],
'type' : ['vod', 'catchup'],
'unique_id' : ['f2514f6b-ce7e-4e1a-8f6a-3ac5d524be30', 'f2514f6b-ce7e-4e1a-8f6a-3ac5d524bb22']})
Run Code Online (Sandbox Code Playgroud)

这使 :

在此输入图像描述

这是我的代码,每次ID和比特率时都会获得一个唯一的日期列:

df = df.drop(['type', 'unique_id'], axis=1)
df.beginning_time = pd.to_datetime(df.beginning_time)
df.end_time = pd.to_datetime(df.end_time)
df = pd.melt(df, id_vars=['Id','bitrate'], value_name='dates').drop('variable', axis=1)
df.set_index('dates', inplace=True)
Run Code Online (Sandbox Code Playgroud)

这使 :

在此输入图像描述

现在,重新抽样的时间!这是我的代码:

print (df.groupby('Id').resample('1S').ffill())
Run Code Online (Sandbox Code Playgroud)

这就是结果:

在此输入图像描述

这正是我想要做的!我有38279个具有相同列的日志,当我做同样的事情时,我有一条错误消息.第一部分完美运作,并给出了:

在此输入图像描述

部分(df.groupby('Id').resample('1S').ffill())给出了以下错误消息:

ValueError: cannot reindex a non-unique index with a method or limit
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?Thnx!

python group-by resampling python-2.7 pandas

7
推荐指数
1
解决办法
9063
查看次数

如果值相同,Python Pandas将列从df复制到另一个

我有两个数据帧:

DF ONE:

ID     A    B    C
 1     x    y    z
 1     x    y    z
 2     x    y    z
 2     x    y    z
 2     x    y    z
 3     x    y    z
Run Code Online (Sandbox Code Playgroud)

DF TWO:

ID     D    E    F
 1     a    b    c1
 2     a    b    c2
 3     a    b    c3
Run Code Online (Sandbox Code Playgroud)

我想E从DF TWO中获取列,并将其放在DF ONE上,如果ID相同,那么在我得到此输出之后:

ID     A    B    C    F
 1     x    y    z    c1
 1     x    y    z    c1
 2     x    y    z    c2
 2     x    y    z    c2
 2 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

3
推荐指数
1
解决办法
859
查看次数

python - 填写关于pandas中特定属性的缺失日期

我的数据如下所示:

id, date, target
1,2016-10-24,22
1,2016-10-25,31
1,2016-10-27,44
1,2016-10-28,12
2,2016-10-21,22
2,2016-10-22,31
2,2016-10-25,44
2,2016-10-27,12
Run Code Online (Sandbox Code Playgroud)

我想在id中填写缺少的日期.例如,id = 1的日期范围是2016-10-24~2016-10-28,缺少2016-10-26.此外,id = 2的日期范围是2016-10-21~2016-10-27,2016-10-23,2016-10-24和2016-10-26都不见了.我想填写缺少的日期并将目标值填写为0.

因此,我希望我的数据如下:

id, date, target
1,2016-10-24,22
1,2016-10-25,31
1,2016-10-26,0
1,2016-10-27,44
1,2016-10-28,12
2,2016-10-21,22
2,2016-10-22,31
2,2016-10-23,0
2,2016-10-24,0
2,2016-10-25,44
2,2016-10-26,0
2,2016-10-27,12
Run Code Online (Sandbox Code Playgroud)

有人能帮助我吗?

提前致谢.

python pandas

2
推荐指数
1
解决办法
851
查看次数

标签 统计

pandas ×3

python ×3

dataframe ×1

group-by ×1

python-2.7 ×1

resampling ×1