我在处理 DataFrame 并从列中获取数据时遇到了问题:
源数据框:
№ Собственники Рег.дата
0 Ильина Светлана Сергеевна (9 000 руб., 90%) 1177746680143
Храпов Иван Филиппович (1 000 руб., 10%)
1 Помигуев Сергей Викторович (10 000 руб., 100%) 1187746820117
2 Гинзбург Семен Эдуардович (10 000 руб., 33,33%) 1157746553161
Буюкян Андрей Завенович (10 000 руб., 33,3%)
Афонасьев Максим Альбертович (10 000 руб., 33.3%)
3 Nan 1089847058322
目标是Собственники从列中获取所有所有者的全名及其所有权份额,分解为每一列:
№ owner_1 share_1 owner_2 share_2 owner_3 share_3 Рег.дата
0 Ильина Светлана Сергеевна 90% Храпов Иван Филиппович 10% Nan Nan 1177746680143
1 Помигуев Сергей Викторович 100% Nan Nan Nan Nan 1187746820117
2 Гинзбург Семен Эдуардович 33,33%) Буюкян Андрей Завенович 33,3% АМА 33.3% 1157746553161
3 Nan 1089847058322
regex我在全名和百分之几的帮助下提取了它,但无法进一步说明如何将它完美地分布在各个列中。
def owner_fio(stroka):
try:
sample = '[А-ЯЁ][а-яё]+\s+[А-ЯЁ][а-яё]+(?:\s+[А-ЯЁ][а-яё]+)?'
s = re.findall(sample, stroka)
return s
except:
return None
def owner_share(stroka):
try:
sample = '\d{1,}%'
s = re.findall(sample, stroka)
return s
except:
return None
当我应用上面的函数时,我以列表的形式获得了全名和 % 的新列:
№ owner share Рег.дата
0 [Ильина Светлана Сергеевна,Храпов Иван Филиппович] [90%,10% ] 1177746680143
1 [Помигуев Сергей Викторович] [100% ] 1187746820117
2 [Гинзбург Семен Эдуардович,Буюкян Андрей Завенович,Афонасьев Максим Альбертович] [33.33%,33.3%,33.3%] 1157746553161
3 Nan Nan 1089847058322
现在如何将所有这些正确且有效地划分为列?
在我看来regex,提取百分比也是不正确的,因为 如果百分比分数不是整数,则不考虑。
试试这样:
结果: