Lin*_*nnK 12 python calculated-columns dataframe pandas
我有一个ave_data包含以下内容的DataFrame :
ave_data
Time F7 F8 F9
00:00:00 43.005593 -56.509746 25.271271
01:00:00 55.114918 -59.173852 31.849262
02:00:00 63.990762 -64.699492 52.426017
Run Code Online (Sandbox Code Playgroud)
我想在此数据框中添加另一列,其中包含每行的F7,F8和F9列下的平均值.
在ave_data我的代码不同的Excel文件中读取数据帧后可能会改变大小,所以该方法需要是通用的(即加总是包含平均在数据帧的最后一列列,不列号4)
desired output
Time F7 F8 F9 Average
00:00:00 43.005593 -56.509746 25.271271 4.25
01:00:00 55.114918 -59.173852 31.849262 9.26
02:00:00 63.990762 -64.699492 52.426017 17.24
Run Code Online (Sandbox Code Playgroud)
EdC*_*ica 14
您可以使用df的副本,copy()然后调用mean并传递参数axis=1,numeric_only=True以便按行计算均值并忽略非数字列,当您执行以下操作时,总是在末尾添加列:
In [68]:
summary_ave_data = df.copy()
summary_ave_data['average'] = summary_ave_data.mean(numeric_only=True, axis=1)
summary_ave_data
Out[68]:
Time F7 F8 F9 average
0 2015-07-29 00:00:00 43.005593 -56.509746 25.271271 3.922373
1 2015-07-29 01:00:00 55.114918 -59.173852 31.849262 9.263443
2 2015-07-29 02:00:00 63.990762 -64.699492 52.426017 17.239096
Run Code Online (Sandbox Code Playgroud)
kt-*_*t-0 13
@LaangeHaare 或其他任何好奇的人,我只是对其进行了测试,已接受答案的副本部分似乎没有必要(也许我遗漏了一些东西...)
所以你可以简化这个:
df['average'] = df.mean(numeric_only=True, axis=1)
Run Code Online (Sandbox Code Playgroud)
我会简单地将其添加为评论,但没有声誉
通常情况下,如果您想使用特定的列,您可以使用:
df['average'] = df[['F7','F8']].mean(axis=1)
Run Code Online (Sandbox Code Playgroud)
其中axis=1 代表rowwise action(使用每一行的列值来计算'average'列中的平均值)
那么您可能希望按此列排序:
df.sort_values(by='average',ascending=False, inplace=True)
Run Code Online (Sandbox Code Playgroud)
其中 inplace=True 代表对数据帧应用操作而不是对副本进行计算。
| 归档时间: |
|
| 查看次数: |
18689 次 |
| 最近记录: |