<\s*(\w+)[^/>]*>
Объясненные детали:
<
: начальный символ
\s*
: он может иметь пробелы перед именем тега (уродливым, но возможным).
(\w+)
: теги могут содержать буквы и цифры (h1). Ну,\w
также соответствует «_», но это не мешает, я думаю. Если любопытное использование ([a-zA-Z0-9] +).
[^/>]*
: все, кроме>
и/
, до закрытия>
>
: закрытие>
UNRELATED
И для парней, которые недооценивают регулярные выражения, говоря, что они только настолько сильны, как обычные языки:
anbanban, который не является регулярный и даже контекстно-свободный, можно сопоставить с
^(a+)b\1b\1$
Обратное обращение FTW !
Обратитесь к
pd.concat([df1,df2],1).groupby(level=0,axis=1).agg(lambda x : x.values.tolist())
Out[529]:
1 2 3 4
1 [A, A] [B, D] [C, G] [D, J]
2 [A, B] [B, E] [C, H] [D, K]
3 [A, C] [B, F] [C, I] [D, L]
. Если бы я был вами, я бы посмотрел на несколько индексов, а не на столбцы типа списка
pd.concat([df1,df2],1,keys=[1,2])
Out[530]:
1 2
1 2 3 4 1 2 3 4
1 A B C D A D G J
2 A B C D B E H K
3 A B C D C F I L
. Вы можете добавить значения из обоих фреймов данных, а также разделитель между ними, и перебирать столбцы, используя str.split
для создания списков. Наконец, используйте pd.concat
, чтобы превратить результат в информационный кадр:
df = df1 + ',' + df2
pd.concat([df[col].str.split(',') for col in df.columns], axis=1)
1 2 3 4
1 [A, A] [B, D] [C, G] [D, J]
2 [A, B] [B, E] [C, H] [D, K]
3 [A, C] [B, F] [C, I] [D, L]
Или используя DataFrame.combine
:
df1.combine(df2, func=lambda a,b: (a + ',' + b).str.split(','))
1 2 3 4
1 [A, A] [B, D] [C, G] [D, J]
2 [A, B] [B, E] [C, H] [D, K]
3 [A, C] [B, F] [C, I] [D, L]
Не очень эффективно, но вы можете преобразовать все ячейки в списки, а затем просто добавить кадры данных следующим образом:
import pandas as pd
import numpy as np
np.random.seed(42)
df1 = pd.DataFrame(
[list('ABCD') for _ in range(5)]
)
df2 = pd.DataFrame(
[np.random.choice(list('ABCD'), size=4).tolist() for _ in range(5)]
)
df1 = df1.apply(lambda x: [[v] for v in x])
df2 = df2.apply(lambda x: [[v] for v in x])
df1 + df2
, который выводит
0 1 2 3
0 [A, C] [B, D] [C, A] [D, C]
1 [A, C] [B, D] [C, A] [D, A]
2 [A, C] [B, B] [C, C] [D, C]
3 [A, C] [B, C] [C, D] [D, A]
4 [A, D] [B, D] [C, D] [D, C]