我在pandas数据框中有一列对象。此列中的每一行都有多个值作为字符串。我想创建一个不错的列表的新列,每一行上都有一个代码。我知道这样做的方法有些草率,但没有一个感觉正确。我们开始:
数据
data = [['A01.001 - Apple; R02.049 - Banana; B32:111 - Candy'],
['C30.086 - Deer; V83.038 - Ears; U23.133 - Race Car'],
['H14.200 - Silver; B32.111 - Candy']]
my_series = pd.DataFrame(data, columns=['Column'])
表格
Column
______
0 A01.001 - Apple; R02.049 - Banana; B32.111 - Candy
1 C30.086 - Deer; V83.038 - Ears; U23.133 - Race Car
2 H14.200 - Silver; B32.111 - Candy
所需结果(我可以重复,可以在以后删除)
New Column
___________
A01.001 - Apple
R02.049 - Banana
B32.111 - Candy
C30.086 - Deer
V83.038 - Ears
U23.133 - Race Car
H14.200 - Silver
B32.111 - Candy
我的验证码
a_list = []
def get_data(data):
for i in data:
pattern = r'[^;]+'
regex = re.findall(pattern, i)
for match in regex:
a_list.append(match)
get_data(my_series)
print(a_list)
(我现在不关心将此列表返回到系列,此列表将有几个目的地。此代码返回大约50,000个结果,如果重复,将重复的结果减少到大约10,000个给任何人。)
尽管这似乎很有效,但我知道这很糟糕,这就是为什么我认为这很糟糕。我声明了一个变量,然后我的函数秘密地将其写入。我的直觉告诉我,这确实很愚蠢,但是我从事这项工作的时间比应该采取的时间长。我知道我做错了什么,但我不知道这是什么。我还没有运气在互联网上找到这种情况的示例,因此,我感谢任何可以摇摆一下,也许打我头的人。谢谢您的时间!
答案 0 :(得分:4)
您只需要split
列并重新创建数据框
df=pd.DataFrame(my_series.Column.str.split(';').sum(),columns=['columns'])
df
columns
0 A01.001 - Apple
1 R02.049 - Banana
2 B32:111 - Candy
3 C30.086 - Deer
4 V83.038 - Ears
5 U23.133 - Race Car
6 H14.200 - Silver
7 B32.111 - Candy