pandas 如何在具有重复时间戳的特定列中查找值的平均值[duplicate]

qmelpv7a  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(93)

此问题在此处已有答案

How can repetitive rows of data be collected in a single row in pandas?(3个答案)
3天前关闭。

**原始 Dataframe **

| 时间戳记|A级|B| C语言|
| - -|- -|- -|- -|
| 19时26分01秒|二十七人|五十五点二|接地|
| 19时26分01秒|二十个|五十四点五|木星|
| 19时26分02秒|二十个|五十六点二|马尔斯|
| 19时26分02秒|二十四|五十三点六|维纳斯|

必需的输出

| 时间戳记|A级|B| C语言|
| - -|- -|- -|- -|
| 19时26分01秒|二十三点五|五十四点八五|接地|
| 19时26分02秒|二十二个|五十四点九|马尔斯|
我已经尝试使用df = df.groupby('Timestamp',as_index=False).mean()
df的其他列有非数字值,因此我得到了以下警告:
未来警告:DataFrameGroupBy.mean中numeric_only得默认值已弃用.在将来得版本中,numeric_only将默认为False.请指定numeric_only或仅选择对该函数有效得列.
有没有办法在保留重复行的非数字值的第一个值的同时,获取“numeric_only”列的平均值?

yizd12fk

yizd12fk1#

对于小型DataFrame,可以用途:

(df.groupby('Timestamp', as_index=False)
   .agg({'A': 'mean', 'B': 'mean', 'C': 'first'})
)

如果需要编程方式:

agg_funcs = {c: 'mean' if pd.api.types.is_numeric_dtype(df[c]) else 'first'
             for c in df} 
# {'Timestamp': 'first', 'A': 'mean', 'B': 'mean', 'C': 'first'}

df.groupby('Timestamp', as_index=False).agg(agg_funcs)

输出量:

Timestamp     A      B      C
0  19:26:01  23.5  54.85  Earth
1  19:26:02  22.0  54.90   Mars

相关问题