pandas系列平均值

ycl3bljg  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(323)

我有一个Pandas系列像这样

0         [['word1', 527], ['word2', 708]]

1         [['word3', 976], ['word1', 980], ['word3',...

其中的值是字符串的形式。基本上这整个事情是一个str"[['word1', 527], ['word2', 708]]"
我想要一个数组或计数器,它的形式是

word1 number1 

word2 number2
.
.
.

其中number_i是与pandas系列中的[word,value]元组相关联的所有数值的平均值。
我试着提取和解析字符串来获取值,然后当遇到一个值时,取前一个值的平均值。

b1payxdu

b1payxdu1#

这里有一种方法:

import ast
import pandas as pd

series = pd.Series([
    "[['word1', 527], ['word2', 708]]",
    "[['word3', 976], ['word1', 980], ['word3', 100]]"
])

out = (
    series
    .apply(ast.literal_eval) # Parse the strings to list[tuple[str, int]]
    .explode()               # Place each tuple on its own line
    .apply(pd.Series)        # Convert to dataframe with 2 columns: word and number
    .groupby(0)[1]           # Group by word, compute on number
    .mean()                  # Take the mean
)

输出:

0
word1    753.5
word2    708.0
word3    538.0
Name: 1, dtype: float64

但我会认真考虑你的数据格式

相关问题