簡體   English   中英

從pandas中的每一行創建一個新列

[英]Creating a new column from each row in pandas

我正在嘗試創建一個新列,並使用每行的值填充它。 我有一個專欄'Journey',新專欄是'Origin'。

def getOrigin(journey):
    if " to " in journey:
        return journey.split(" to ")[0]
    else:
        return "No origin"

df['Origin'] = getOrigin(df.Journey)

print(df['Origin'])

如果df.Journey是“America to England”,那么我希望df ['Origin']是'America',而是每一行Origin都是“No origin”。 我該怎么做呢?

我相信你需要像這樣映射它:

df['Origin'] = df.Journey.applymap(getOrigin)

這應該將您的函數應用於Journey列中的每個項目

這個解決方案效率較低,代碼更多,但作為初學者,更容易理解...可能與您嘗試解決問題的方式一致......!

df = pd.DataFrame(data = {'Journey' : ['england to america', 'peru', 'france to china']})

origin = []
def getOrigin(Journey):
    for i in range(len(Journey)):
        if " to " in Journey[i]:
            origin.append(Journey[i].split(" to ")[0])
        else:
            origin.append("No origin")
return origin



df['Origin'] = getOrigin(df['Journey'])

print (df['Origin'])

0      england
1    No origin
2       france
Name: Origin, dtype: object

str.extract + fillna

df['Origin'] = df['Journey'].str.extract('^(.*?)(?=\s*to)').fillna('No origin')

str.split + fillna

df['Origin'] = df['Journey'].str.split(' to').str[0].fillna('No origin')

列表理解

df['Origin'] = [
    x.split(' to ')[0] if 'to' in x else 'No origin' for x in df['Journey']
]

暫無
暫無

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

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