我有以下原始数据导出:
import pandas as pd
df = pd.DataFrame({
'Data': ['A15','abc','A25',50,'abc','A30',20,'def','A4','hijk','A',10,'mnop'],
})
df
我正尝试将此原始数据转置到具有3列的表中:Name, Number and Text
我希望每次出现A
时都有一行,因为这是一致的模式。之后总是有一个文本,但有时会有一个数字。如果出现此数字,它总是A
之后的直接行。我的预期输出如下:
有什么想法,我可以如何处理这一点?非常感谢!
3条答案
按热度按时间4ngedf3f1#
转换为列表:
遍历列表,如果元素匹配
A\d+
,则添加新子列表,否则追加到最后一个子列表:如果子列表只有两个项目,则返回到'Number'为np.NaN的字典列表:
转换为数据框:
该函数返回:
hjzp0vay2#
您可以定义遮罩并使用
pivot
:输出:
中间体:
xytpbqjk3#
出局