[英]How to assign specific substring to column in Python or Pandas
如果數據框看起來像
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.