创建包含特定字符串列的新数据集



我试图找出一种有效的方法来处理大数据集:数据每天包含多行,指定代码(字符串)和评级作为列。我尝试创建一个新的数据集与列在这个列表中的所有字符串;String =['239', '345', '346'],新数据集应该包含每天评级的平均值。这样我就得到了指定数字的均值的时间序列

这是一个简单的数据集示例:

df1 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03'],
'Code':['P:346 K,329 28', 'N2:345 P239', 'P:346 K2', 'E32 345', 'Q2_325', 'P;235 K345', '2W345', 'Pq-245 3460239'], 
'Ratings':[9.0, 8.0, 5.0, 3.0, 2, 3, 6, 5]})  

我试着实现类似于那张表的东西,但到目前为止我还不能有效地完成它。

strings = ['239', '345', '346']
df2 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03'],
'239':[8.5, 'NA', '5'], 
'345':[8, 4, 'NA'],
'346':[7, 'NA', 5],})

非常感谢你的帮助:)

您可以将code列中的字符串extract,然后将pivot:

print (df1.assign(Code=df1["Code"].str.extractall(f"({'|'.join(strings)})").groupby(level=0).agg(tuple))
.explode("Code")
.pivot_table(index="Date", columns="Code", values="Ratings", aggfunc="mean"))
Code        239  345  346
Date                     
2021-01-01  8.5  8.0  7.0
2021-01-02  NaN  4.0  NaN
2021-01-03  5.0  NaN  5.0

相关内容

  • 没有找到相关文章

最新更新