Python 从中的每一行创建一个新列
我试图创建一个新列,并使用每行中的值填充它。我有一个专栏“旅程”,新的专栏是“起源”Python 从中的每一行创建一个新列,python,pandas,dataframe,Python,Pandas,Dataframe,我试图创建一个新列,并使用每行中的值填充它。我有一个专栏“旅程”,新的专栏是“起源” 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.travel是“从美国到英国”
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.travel是“从美国到英国”,那么我希望df['Origin']是“America”,但是每一行的Origin都是“No Origin”。我该怎么做?str.extract
+fillna
str.split
+fillna
列表理解
我相信您需要这样绘制地图:
df['Origin'] = df.Journey.applymap(getOrigin)
这应该将您的函数应用于旅程列中的每个项目此解决方案效率较低,代码较多,但作为初学者,可能更容易理解。。。 与你试图解决问题的方式一致
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
您可以使用非循环解决方案100%矢量化。。。虽然这是一个备选方案,但在开始讨论这个问题之前,我还是推荐另外5个更相关的方案。
df['Origin'] = [
x.split(' to ')[0] if 'to' in x else 'No origin' for x in df['Journey']
]
df['Origin'] = df.Journey.applymap(getOrigin)
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