我想从熊猫数据框架中取一列值的平均值。我的实际数据框架是,
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()
发布于 2019-08-16 02:44:42
试试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
发布于 2019-08-16 03:01:30
df = pd.DataFrame([['ac233f264920','ac233fc015f6', 1, 1, [-32, -45]],
['ac233f26492b','ac233fc015f6', 0, 0, [-65, -52]],
['ac233f264933','ac233fc015f6', 1, 2, [-69, -73]],
], columns=['mac', 'gw_mac','ibeaconMajor','ibeaconMinor', 'rssi'])
df
mac gw_mac ibeaconMajor ibeaconMinor rssi
0 ac233f264920 ac233fc015f6 1 1 [-32, -45]
1 ac233f26492b ac233fc015f6 0 0 [-65, -52]
2 ac233f264933 ac233fc015f6 1 2 [-69, -73]
计算平均值
means = [np.mean(x) for x in df['rssi']]
替换柱
df['rssi'] = means
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
https://stackoverflow.com/questions/57522993
复制