python - 将 pandas 系列中的值分开并将它们全部堆叠到列表中?

标签 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

Desired Result(我可以接受重复项,以后可以去掉它们)

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

尽管这似乎“有效”,但我知道这是废话,这就是我认为它是废话的原因。我声明了一个变量,我的函数 secret 地写入它。我的直觉告诉我这真的很愚蠢,但我做这件事的时间比应该花的时间要长。我知道我做错了什么,但我不知道它是什么。我没有运气在互联网上找到这种情况的例子,所以我很感激任何能尝试一下的人,也许会打我的脑袋。感谢您的宝贵时间!

最佳答案

您只需要拆分列并重新创建数据框

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

关于python - 将 pandas 系列中的值分开并将它们全部堆叠到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067183/

相关文章:

python - 如何创建一个总结多个日常资料的情节?

Pandas 按两列值排序

Python - 按列保留第一个唯一值

python - 通过 Group By Pandas 创建两个聚合列

python - 使用 Pandas/ExcelWriter 为单元格中的文本部分着色

python - 如何使用 python 计算几个 .dat 文件的平均值?

python - 在 Bokeh 生成的 HTML 表中动态更改值

python - 如何将数据框导出到现有的格式化 csv 文件?

python - 从字符串中获取关键字列表

pandas - 数据框将一些列与一系列相乘