python 中数据框每 15 行的平均值
Mean of every 15 rows of a dataframe in python
我有一个 (1500x11) 的数据框。我必须 select 15 行中的每一行,并分别取每 11 列的平均值。所以我的最终数据框应该是 100x11 的维度。如何在 Python.
中执行此操作
不太了解 pandas
,因此我用纯 numpy
编写了我的下一个解决方案。没有任何 python 循环因此非常有效。并将结果转换回 pandas
DataFrame
:
import pandas as pd, numpy as np
df = pd.DataFrame([[i + j for j in range(11)] for i in range(1500)])
a = df.values
a = a.reshape((a.shape[0] // 15, 15, a.shape[1]))
a = np.mean(a, axis = 1)
df = pd.DataFrame(a)
print(df)
您可以使用 pandas.DataFrame.
使用 for 循环计算均值并创建一个计数器,该计数器应每 15 个条目重置一次。
columns = [col1, col2, ..., col12]
for columns, values in df.items():
# compute mean
# at every 15 entries save it
此外,使用 pd.DataFrame() 您可以创建新的数据框。
我建议您阅读文档。
https://pandas.pydata.org/pandas-docs/stable/reference/frame.html
以下应该有效:
dfnew=df[:0]
for i in range(100):
df2=df.iloc[i*15:i*15+15, :]
x=pd.Series(dict(df2.mean()))
dfnew=dfnew.append(x, ignore_index=True)
print(dfnew)
我有一个 (1500x11) 的数据框。我必须 select 15 行中的每一行,并分别取每 11 列的平均值。所以我的最终数据框应该是 100x11 的维度。如何在 Python.
中执行此操作不太了解 pandas
,因此我用纯 numpy
编写了我的下一个解决方案。没有任何 python 循环因此非常有效。并将结果转换回 pandas
DataFrame
:
import pandas as pd, numpy as np
df = pd.DataFrame([[i + j for j in range(11)] for i in range(1500)])
a = df.values
a = a.reshape((a.shape[0] // 15, 15, a.shape[1]))
a = np.mean(a, axis = 1)
df = pd.DataFrame(a)
print(df)
您可以使用 pandas.DataFrame.
使用 for 循环计算均值并创建一个计数器,该计数器应每 15 个条目重置一次。
columns = [col1, col2, ..., col12]
for columns, values in df.items():
# compute mean
# at every 15 entries save it
此外,使用 pd.DataFrame() 您可以创建新的数据框。
我建议您阅读文档。 https://pandas.pydata.org/pandas-docs/stable/reference/frame.html
以下应该有效:
dfnew=df[:0]
for i in range(100):
df2=df.iloc[i*15:i*15+15, :]
x=pd.Series(dict(df2.mean()))
dfnew=dfnew.append(x, ignore_index=True)
print(dfnew)