我想从熊猫数据框中的列中取值列表的平均值。
我拥有的实际数据帧是

df:
mac           gw_mac        ibeaconMajor  ibeaconMinor  rssi
ac233f264920  ac233fc015f6  1             1             [-32, -45]
ac233f26492b  ac233fc015f6  0             0             [-65, -52]
ac233f264933  ac233fc015f6  1             2             [-69, -73]


所需的结果是

df:
mac           gw_mac        ibeaconMajor  ibeaconMinor  rssi
ac233f264920  ac233fc015f6  1             1             -38.5
ac233f26492b  ac233fc015f6  0             0             -58.5
ac233f264933  ac233fc015f6  1             2             -71


我尝试使用以下功能,但无法获得所需的响应。

df.assign(rssi=pd.to_numeric(df['rssi'], errors='coerce')) \
              .groupby(['mac','gw_mac','ibeaconMajor','ibeaconMinor'])
               ['rssi'].mean()

最佳答案

尝试apply

df['rssi'] = df.rssi.apply(np.mean)


完整示例:

data = [["ac233f264920",  "ac233fc015f6",  1, 1, [-32, -45]],
        ["ac233f26492b",  "ac233fc015f6",  0, 0, [-65, -52]],
        ["ac233f264933",  "ac233fc015f6",  1, 2, [-69, -73]]]


df = pd.DataFrame(data, columns=["mac", "gw_mac", "ibeaconMajor",  "ibeaconMinor",  "rssi"])

df['rssi'] = df.rssi.apply(np.mean)
print(df)
#             mac        gw_mac  ibeaconMajor  ibeaconMinor  rssi
# 0  ac233f264920  ac233fc015f6             1             1 -38.5
# 1  ac233f26492b  ac233fc015f6             0             0 -58.5
# 2  ac233f264933  ac233fc015f6             1             2 -71.0

关于python - 如何在 Pandas 数据框中使用groupby取列列表的平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57522993/

10-11 02:16
查看更多