我在 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/