Python 如何比较两个数据帧列?
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()Python 如何比较两个数据帧列?,python,python-3.x,pandas,Python,Python 3.x,Pandas,ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all() 当我比较主队和客队的得分时,错误是在if条件下。我想做的是在csv文件中添加一列,列出一支球队的胜负,赢是1,输是0,这样我就可以把一个赛季中某支球队的胜利加起来,计算他们获胜的概率,并预测下一个赛季获胜的概率,你可以这样做: import pandas as pd import quandl import numpy as np import matplotlib.p
当我比较主队和客队的得分时,错误是在if条件下。我想做的是在csv文件中添加一列,列出一支球队的胜负,赢是1,输是0,这样我就可以把一个赛季中某支球队的胜利加起来,计算他们获胜的概率,并预测下一个赛季获胜的概率,你可以这样做:
import pandas as pd
import quandl
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("fivethirtyeight")
df_2010=pd.read_csv("c:/users/ashub/downloads/documents/MLB 2010.csv",index_col=0)
#print(df_2010)
sliced_data=df_2010[["Home Team","Away Team","Home Score","Away Score"]]
#print(sliced_data)
for win in sliced_data:
flag1=sliced_data["Home Team"]+str("index")
flag2=sliced_data["Away Team"]+str("index")
print(sliced_data["Home Score"],sliced_data["Away Score"])
if sliced_data["Home Score"]>sliced_data["Away Score"]:
df_2010=df_2010.join([1,0],index=[flag1,flag2])
else:
df_2010=df_2010.join([0,1],index=[flag1,flag2])
df_2010.to_html("c:/users/ashub/desktop/ashu.html")
您将不需要切片数据帧
下面是一个完整的示例:
df_2010['Win'] = df_2010['Home Score'] > df_2010['Away Score']
这将增加
import pandas as pd
import numpy as np
df = pd.DataFrame([np.random.randint(0, 5, 5),
np.random.randint(0, 5, 5)],
index=['Home Score', 'Away Score']).T
print(df)
df['Win'] = df['Home Score'] > df['Away Score']
print(df)
另一列win
如下所示:
Home Score Away Score
0 3 3
1 4 2
2 4 1
3 4 4
4 4 2
我认为您可以通过比较列来创建布尔掩码,然后分配新列:
Home Score Away Score Win
0 3 3 False
1 4 2 True
2 4 1 True
3 4 4 False
4 4 2 True
这与:
np.random.seed(123)
sliced_data = pd.DataFrame([np.random.randint(0, 5, 5),
np.random.randint(0, 5, 5)],
index=['Home Score', 'Away Score']).T
m = sliced_data['Home Score'] > sliced_data['Away Score']
sliced_data['Away Team index'] = (~m).astype(int)
sliced_data['Home Team index'] = m.astype(int)
print(sliced_data)
Home Score Away Score Away Team index Home Team index
0 2 2 1 0
1 4 3 0 1
2 2 1 0 1
3 1 1 1 0
4 3 0 0 1
你能添加数据样本吗?请更详细地解释你试图完成什么。当我比较主队和客队的得分时,错误是在if条件下。我想做的是在csv文件中添加一列,列出一支球队的胜负,赢是1,输是0,这样我就可以把一个赛季中某支球队的胜利加起来,计算他们获胜的概率,并预测下一个赛季获胜的概率。但这总是会给主队分配1,而我想给获胜的球队分配1。我用
sliced_data=pd.DataFrame([np.random.randint]进行测试(0,5,5),np.random.randint(0,5,5)],index=[‘主场得分’、‘客场得分’).T
并且它可以工作,可能数据中有一些问题?我添加了样本并简化了解决方案。
sliced_data['Away Team index'] = np.where(m, 0,1)
sliced_data['Home Team index'] = np.where(m, 1,0)
print(sliced_data)
Home Score Away Score Away Team index Home Team index
0 2 2 1 0
1 4 3 0 1
2 2 1 0 1
3 1 1 1 0
4 3 0 0 1