簡體   English   中英

如何將特定子字符串分配給 Python 或 Pandas 中的列

[英]How to assign specific substring to column in Python or Pandas

我對 Python 比較陌生。 我試圖了解如何通過提取子字符串並將子字符串分配給特定列來分解列。 請參閱下面關於我想做的事情:

我想要的輸出:

在此處輸入圖片說明

到目前為止,我已經使用以下代碼將一列分解為多列,但這只是將字符串分解為多列,而不是按照我想要的特定順序。 有沒有辦法用 Python 做到這一點?

my_ingredients = my_ingredients.str.split(',',expand = True)
my_ingredients.head()

我現在得到的輸出如下所示:

我不想要的錯誤輸出:

在此處輸入圖片說明

關於如何使用 Python 執行此操作的任何建議?

謝謝!

如果數據框看起來像

import pandas as pd

df = pd.DataFrame({"My_Date":["Apple,Cat,Banana","Banana,Cat,Apple","Apple,Banana,Cat","Cat,Apple,Banana"]})

#              My_Date
#  0  Apple,Cat,Banana
#  1  Banana,Cat,Apple
#  2  Apple,Banana,Cat
#  3  Cat,Apple,Banana

那么也許

df = df['My_Date'].apply(lambda x: pd.Series(sorted(x.split(','))))

#         0       1    2
#  0  Apple  Banana  Cat
#  1  Apple  Banana  Cat
#  2  Apple  Banana  Cat
#  3  Apple  Banana  Cat

就是你要找的。 它只是按字母順序對元素進行排序。


但請注意,如果原始數據框中的行不是這三個元素的排列,則此解決方案不會將列放置在正確的位置。 我想,出於實際目的,您可能需要具有不同元素和大小的逗號分隔值。 在這種情況下,可能存在包含空元素的列。 相反,如果您有一個看起來更像的數據框

df = pd.DataFrame({"My_Date":["Apple,Cat,Banana","Banana,Cat,Apple,","Banana,Cat","Cat,Dog,Apple,Banana"]})

#                       My_Date
#  0           Apple,Cat,Banana
#  1  Banana,Cat,Apple,Elephant
#  2                 Banana,Cat
#  3       Cat,Dog,Apple,Banana

然后你可以嘗試類似的東西

df = pd.DataFrame({e: [e in s.split(',') for s in df['My_Date']] for e in unique_elements})

#     Apple  Banana   Cat    Dog  Elephant
#  0   True    True  True  False     False
#  1   True    True  True  False      True
#  2  False    True  True  False     False
#  3   True    True  True   True     False

或者,如果您堅持將元素的名稱作為值,那么您可以選擇

import numpy as np

df = pd.DataFrame({e: [e if e in s.split(',') else np.nan for s in df['My_Date']] for e in unique_elements})

#     Apple  Banana  Cat  Dog  Elephant
#  0  Apple  Banana  Cat  NaN       NaN
#  1  Apple  Banana  Cat  NaN  Elephant
#  2    NaN  Banana  Cat  NaN       NaN
#  3  Apple  Banana  Cat  Dog       NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM