【发布时间】:2022-01-08 15:15:25
【问题描述】:
我正在尝试使用一个 excel 文件来做一些以相当烦人的格式组合在一起的事情(我没有创建它;它是我正在使用的现有资源)。感兴趣的值位于名为(类似于)All_Values 的列中,由句点分隔,而与这些值对应的度量值在单独的列 All_Measures 中指定,也由句点分隔并且每行不同。例如,使用玩具数据集:
Object All_Measures All_Values (additional columns that are not like this)
1 Height.Weight 20.50 ...
2 Weight.Height 65.30 ...
3 Height.Width.Depth 22.30.10 ...
我想做的是像这样重新格式化数据,用 0 填充缺失值(列的最终顺序并不重要):
Object Height Weight Width Depth (additional columns)
1 20 50 0 0 ...
2 30 65 0 0 ...
3 22 0 30 10 ...
我可以做到这一点的一种方法是(非常缓慢,因为它是一个大数据集)创建一个新的空白数据框,然后迭代现有的每一行,创建一个新的数据框行,其中包含通过拆分 @ 指定的列987654325@ by .,以及通过将All_Values 拆分为. 指定的值。然后,我从行中删除 All_Measures 和 All_Values 并将新数据帧附加到它的末尾,并将其附加到空白数据帧。但这很笨拙,如果有更快、更优雅的方法来做这件事就更好了。
因为这里没有错误,所以我没有 MWE,但这里有一些代码可以复制来创建一个像上面这样的玩具数据集,以防万一。
df = pd.DataFrame(
columns = ['Object','All_Measures','All_Values','Object_Name']
[[1,'Height.Weight','20.50','First'],
[2,'Weight.Height','65.30','Second'],
[3,'Height.Width.Depth','22.30.10','Third']]
)
【问题讨论】: