我想对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
使用sum和mean聚合器对数字列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
我想要这个:
...
2017-02-03 5.0 merge - us 25.0
我试着用不同的方法使用lambda,但没有成功(未显示)。
如果我可以问第二个相关的问题:我可以对此做一些后期处理,但是如何用零或“”填充不同列中丢失的单元格?
最佳答案
列'C'
的agg函数应该是ajoin
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
关于python - 重新采样 Pandas 数据框并合并列中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47613521/