非常感谢您的帮助。我是Pandas的python菜鸟,已经被这个问题困扰了。
我在该网站上搜索了大约100个不同的查询,但找不到合适的内容。我最接近的是使用布尔型蒙版。
请单击下面的文本以找到我的数据框。
日期HomeTeam AwayTeam home_form away_form new_column
2019年8月25日史特拉斯堡雷恩1.0 3.0 Nan(第25行,只是一个例子)
01/09/2019雷恩尼斯3.0 3.0 3.0(第37行,只是一个例子)
我想在Homeway在AwayTeam列中出现的最后一行中提取上一个“ away_form”值
答案 0 :(得分:0)
这不是一个完整的解决方案,但我想我找到了一种方法来帮助您取得一些进步。
这里是步骤:
将“ HomeTeam”列转换为列表…这是目标列。
创建一个空列表来存储“ HomeTeam”列的搜索结果
在“ AwayTeam”列中巡视各个团队
使用Python的list.index()方法返回匹配项的索引…,但请尝试使用-除非您找不到匹配项。
将结果存储到列表
在完成for循环后,将该列表作为新列添加到pandas数据框中。
import pandas as pd
import numpy as np
# create sample dataframe
df = pd.DataFrame({
'Date': ['2019-08-18', '2019-08-25'],
'HomeTeam': ['Rennes', 'Strasbourg'],
'AwayTeam': ['Paris SG', 'Rennes'],
'home_form': [np.NaN, 1.0],
'away_form': [np.NaN, 3.0],
})
# convert your 'HomeTeam' column into a Python list
list_HomeTeam = list(df['HomeTeam'])
print(list_HomeTeam)
# create an empty list to capture the index position of matches in 'HomeTeam'
list_results_in_home = []
# loop through each team in the 'AwayTeam column'
for each_team in df['AwayTeam']:
# if you find a match in the list, store index as a result
try:
result = list_HomeTeam.index(each_team)
# if you don't find a match, store a string
except:
result = 'team not in list'
# add the result to the list that is capturing the index position in 'HomeTeam'
list_results_in_home.append(result)
print(list_index_home)
# add column to dataframe with the index position
df['index_match_in_HomeTeam'] = list_results_in_home