重新采样 Pandas 数据框并合并列中的字符串

ale*_*s80 2 python resampling pandas

我想重新采样一个熊猫数据框并将不同的函数应用于不同的列。问题是我无法正确处理带有字符串的列。我想应用一个将字符串与分隔符(例如“ - ”)合并的函数。这是一个数据示例:

import pandas as pd
import numpy as np
idx = pd.date_range('2017-01-31', '2017-02-03')
data=list([[1,10,"ok"],[2,20,"merge"],[3,30,"us"]])
dates=pd.DatetimeIndex(['2017-01-31','2017-02-03','2017-02-03'])
d=pd.DataFrame(data, index=,columns=list('ABC'))

            A   B          C
2017-01-31  1  10         ok
2017-02-03  2  20      merge
2017-02-03  3  30         us 
Run Code Online (Sandbox Code Playgroud)

使用总和和均值聚合器对数字列 A 和 B 重新采样有效。然而,C 列与 sum 一起工作(但它被放在第二位,这可能意味着某些事情失败了)。

d.resample('D').agg({'A': sum, 'B': np.mean, 'C': sum})

              A               C     B
2017-01-31  1.0               a  10.0
2017-02-01  NaN               0   NaN
2017-02-02  NaN               0   NaN
2017-02-03  5.0        merge us  25.0
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

...
2017-02-03  5.0      merge - us  25.0
Run Code Online (Sandbox Code Playgroud)

我尝试以不同的方式使用 lambda,但没有成功(未显示)。

如果我可以问第二个相关问题:我可以为此做一些后期处理,但是如何用零或“”填充不同列中缺失的单元格?

piR*_*red 5

您的列 agg 函数'C'应该是join

d.resample('D').agg({'A': sum, 'B': np.mean, 'C': ' - '.join})

              A     B           C
2017-01-31  1.0  10.0          ok
2017-02-01  NaN   NaN            
2017-02-02  NaN   NaN            
2017-02-03  5.0  25.0  merge - us
Run Code Online (Sandbox Code Playgroud)