[英]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.