我有一个数据框,例如:
Val1 Val2
1 4
2 10
2 5
1 7
2 0
1 20
我想得到Val2中Val1值等于1(在同一行中)的所有数字的均值。如果不使用循环我怎么能这样做?
答案 0 :(得分:0)
你可以尝试
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Xml.Serialization
Imports System.Xml
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ipAddress As String = txtIP.Text.Trim()
lblStatus.Text = GetGeoData(ipAddress).CountryName
End Sub
Public Function GetGeoData(ByVal ipAddress As String) As Response
Dim string_writer As New StringWriter()
Dim request = CType(WebRequest.Create(String.Format("https://freegeoip.net/xml/{0}", ipAddress)), HttpWebRequest)
Try
Dim response = request.GetResponse
Dim responseStream = response.GetResponseStream
Dim reader = New StreamReader(responseStream, Encoding.UTF8)
Dim ms As XmlSerializer = New XmlSerializer(GetType(Response))
Dim xmlReader As XmlReader = _
xmlReader.Create(New System.IO.StringReader(reader.ReadToEnd))
Dim r = CType(ms.Deserialize(xmlReader), Response)
Return r
Catch ex As WebException
Return Nothing
End Try
End Function
End Class
Public Class Response
Public Property IP As String
Public Property CountryCode As String
Public Property CountryName As String
Public Property RegionCode As String
Public Property RegionName As String
Public Property City As String
Public Property ZipCode As String
Public Property Latitude As String
Public Property Longitude As String
Public Property MetroCode As String
End Class
答案 1 :(得分:0)
我想你只想将均值作为一个简单的浮点数。在这种情况下,您可以:
df[df["Val1"] == 1]["Val2"].mean()
答案 2 :(得分:0)
其他答案也应该提供正确的答案,但我相信最常用的方法是:
df.loc[df['Val1']==1, 'Val2'].mean()