Python Keyerror:使用两列值的平方和的平方根创建dataframe列
我有一个a列和B列的数据框。我想创建第三列,它是两列平方和的平方根 以下是我的样本数据:Python Keyerror:使用两列值的平方和的平方根创建dataframe列,python,pandas,Python,Pandas,我有一个a列和B列的数据框。我想创建第三列,它是两列平方和的平方根 以下是我的样本数据: A B 10 7 10 8 9 8 10 11 13 5 3 0 12 8 12 9 11 10 10 11 下面是我尝试过的代码: df['vib_mot_sqrt'] = df[(np.sqrt(df['X']**2) + (df['index']**2))] KeyError:“[Float64Index([6.0,6.0,11.0,15.0,16.0,33.0,42.
A B
10 7
10 8
9 8
10 11
13 5
3 0
12 8
12 9
11 10
10 11
下面是我尝试过的代码:
df['vib_mot_sqrt'] = df[(np.sqrt(df['X']**2) + (df['index']**2))]
KeyError:“[Float64Index([6.0,6.0,11.0,15.0,16.0,33.0,42.0,55.0,73.0,87.0],dtype='float64')]中没有一个在[列]中。”
与列和总和一起使用:
df['vib_mot_sqrt'] = df['A']**.5 + df['B']**.5
print (df)
A B vib_mot_sqrt
0 10 7 5.808029
1 10 8 5.990705
2 9 8 5.828427
3 10 11 6.478902
4 13 5 5.841619
5 3 0 1.732051
6 12 8 6.292529
7 12 9 6.464102
8 11 10 6.478902
9 10 11 6.478902
我的原件:
请您澄清一下,您是要精确计算一个值,还是每行计算一个值 如果要计算每行的值并将其添加到新列,则应执行以下操作:
df['C']= np.sqrt(df['A']**2+df['B']**2)
输出:
A B C
0 4 5 6.403124
1 3 3 4.242641
2 1 1 1.414214
使用np.sqrt(x)
表示平方根,使用x**a
表示幂:
df = pd.DataFrame([
[10 , 7],
[10 , 8],
[9 , 8],
[10 , 11],
[13 , 5],
[3 , 0],
[12 , 8],
[12 , 9],
[11 , 10],
[10 ,11],],
columns=["A" , "B"])
df["sqrt(A²+B²)"] = np.sqrt(df["A"]**2 + df["B"]**2)
print(df)
# A B sqrt(A²+B²)
# 0 10 7 12.206556
# 1 10 8 12.806248
# 2 9 8 12.041595
# 3 10 11 14.866069
# 4 13 5 13.928388
# 5 3 0 3.000000
# 6 12 8 14.422205
# 7 12 9 15.000000
# 8 11 10 14.866069
# 9 10 11 14.866069
平方根和?你在哪里做的?我只看到一个
sqrt
是的,您可能会说这两个词,并且您的代码本身与它们相矛盾。您的问题标题和代码实现令人困惑。请解释你希望人们解决什么问题@Sheldore谢谢你的指点。那是打字错误。我已经编辑了问题的标题和摘要部分。希望这是清楚的。@Sheldore-谢谢,答案变了。@jezrael,太好了!谢谢你的意见。我之前在np.sqrt上使用了df。没有这个必要。现在完全可以了,我想计算每一行的值。你正确地回答了我的问题。谢谢!
df = pd.DataFrame([
[10 , 7],
[10 , 8],
[9 , 8],
[10 , 11],
[13 , 5],
[3 , 0],
[12 , 8],
[12 , 9],
[11 , 10],
[10 ,11],],
columns=["A" , "B"])
df["sqrt(A²+B²)"] = np.sqrt(df["A"]**2 + df["B"]**2)
print(df)
# A B sqrt(A²+B²)
# 0 10 7 12.206556
# 1 10 8 12.806248
# 2 9 8 12.041595
# 3 10 11 14.866069
# 4 13 5 13.928388
# 5 3 0 3.000000
# 6 12 8 14.422205
# 7 12 9 15.000000
# 8 11 10 14.866069
# 9 10 11 14.866069