将熊猫系列中的值分开并将它们全部堆叠到列表中?

时间:2019-07-17 00:58:53

标签: python pandas

我在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个给任何人。)

尽管这似乎很有效,但我知道这很糟糕,这就是为什么我认为这很糟糕。我声明了一个变量,然后我的函数秘密地将其写入。我的直觉告诉我,这确实很愚蠢,但是我从事这项工作的时间比应该采取的时间长。我知道我做错了什么,但我不知道这是什么。我还没有运气在互联网上找到这种情况的示例,因此,我感谢任何可以摇摆一下,也许打我头的人。谢谢您的时间!

1 个答案:

答案 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