从数据框中的其他行中减去 60 行的平均值
Subtracting the average value of 60 row from the other rows in a dataframe
我导入了一个包含 2135 行和 518 列的 pandas DataFrame。现在我想取前 60 行的平均值并从其他行中减去这些值。到目前为止我用过这个:
mean = df[1:60].mean()
取前 60 行的平均值。我试图通过使用减去它:
df[61:2135] - mean
但这不起作用。我已经尝试了更多的东西,但我似乎无法弄清楚。可能是数据帧的形状,因为 mean 的形状是 (517,) 而 df[61:2135] 的形状是 (2072,518).
您的数据看起来格式不正确,最后一列有尾随分号...;;;
您需要替换它们并转换回浮点数:
In [44]:
df[517] = df[517].str.replace(';;;','').astype(float)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2134 entries, 0 to 2133
Columns: 518 entries, 0 to 517
dtypes: float64(518)
memory usage: 8.4 MB
那么您尝试的方法就会奏效
此外,您的第二行看起来不像是有效的列行,因此您需要将 header=None
传递给 read_csv
:
df = pd.read_csv ("csvdata.csv", sep=",",skiprows=1, header=None)
我导入了一个包含 2135 行和 518 列的 pandas DataFrame。现在我想取前 60 行的平均值并从其他行中减去这些值。到目前为止我用过这个:
mean = df[1:60].mean()
取前 60 行的平均值。我试图通过使用减去它:
df[61:2135] - mean
但这不起作用。我已经尝试了更多的东西,但我似乎无法弄清楚。可能是数据帧的形状,因为 mean 的形状是 (517,) 而 df[61:2135] 的形状是 (2072,518).
您的数据看起来格式不正确,最后一列有尾随分号...;;;
您需要替换它们并转换回浮点数:
In [44]:
df[517] = df[517].str.replace(';;;','').astype(float)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2134 entries, 0 to 2133
Columns: 518 entries, 0 to 517
dtypes: float64(518)
memory usage: 8.4 MB
那么您尝试的方法就会奏效
此外,您的第二行看起来不像是有效的列行,因此您需要将 header=None
传递给 read_csv
:
df = pd.read_csv ("csvdata.csv", sep=",",skiprows=1, header=None)