Python 基于特定行获取熊猫中列的平均值
我有一个数据,存储了一天、一个月、三个月和一年内股票价值的百分比变化Python 基于特定行获取熊猫中列的平均值,python,pandas,dataframe,average,Python,Pandas,Dataframe,Average,我有一个数据,存储了一天、一个月、三个月和一年内股票价值的百分比变化 ID daychange monthchange trimonthchange yearchange UNITY 0.001666 0.398450 0.411581 0.689139 SSOM -0.033359 0.040816 1.174840 3.047619 PNSC -0.004953 -0.053006 0.15
ID daychange monthchange trimonthchange yearchange
UNITY 0.001666 0.398450 0.411581 0.689139
SSOM -0.033359 0.040816 1.174840 3.047619
PNSC -0.004953 -0.053006 0.158677 0.224932
PICT -0.002027 -0.069696 0.041143 0.310791
PIBTL -0.014848 0.129362 0.459846 0.287100
我想得到:
df.mean(axis=1)
,但这不起作用
任何帮助都将不胜感激!谢谢您可能需要链接
过滤器
和均值
函数调用。因为您首先要选择一组要保留的行,所以需要过滤掉不需要保留的行。然后,使用新的数据集,您需要执行列平均
df.filter(lambda行:在[“UNITY”、“SSOM”、“PNSC”]中的row.ID)。平均值(轴=1)
注意,我没有测试上述代码,也不保证它能正常工作。使用标签(ID
column)访问一组行,然后使用axis=0
计算每个时间段列的平均值。使用组名创建一个系列
,并将以前的结果附加到该系列中(这样组名将成为数据框中的第一列
)。将系列
放在列表中,然后在对组进行迭代后,转换为数据帧
。要将结果放入单独的csv文件,请使用
数据的输出
groupName daychange monthchange trimonthchange yearchange
0 UNITY-SSOM-PNSC -0.012215 0.128753 0.581699 1.320563
1 SSOM-PICT-PIBTL -0.016745 0.033494 0.558610 1.215170
2 SSOM-PNSC-PIBTL -0.017720 0.039057 0.597788 1.186550
它不:/return self.reindex(**{name:[r代表项目中的r,如果标签中的r]})TypeError:“function”对象不是iterableThanks,请回答!你知道为什么它会给出raisekeyerror(f“列中没有{missing}”)KeyError:“['ID']中没有一个在列中”我已经将你在问题中发布的数据框复制到一个
sample.csv
,这就是为什么我使用sep='\s+
。如果您的CSV文件具有默认分隔符(,
),您可以删除sep
参数,并且应该可以工作。另外,您可以始终打印(df.head())
以确保数据帧具有预期的结构。谢谢!!它起作用了。最后,出于我的好奇心,如果我想将组名更改为更简洁、更习惯的名称,你能提出一些建议吗?在有限的上下文中给出相关建议是一个挑战,但直接的改进是将列表列表从更改为字典(例如groupDict={'G1':['UNITY'、'SSOM'、'PNSC']、'G2':['SSOM'、'PICT'、'PIBTL']}
),使用键作为组名。
groupName daychange monthchange trimonthchange yearchange
0 UNITY-SSOM-PNSC -0.012215 0.128753 0.581699 1.320563
1 SSOM-PICT-PIBTL -0.016745 0.033494 0.558610 1.215170
2 SSOM-PNSC-PIBTL -0.017720 0.039057 0.597788 1.186550