python - pandas dataframe中 `.value_counts()`的逆向操作是什么?

标签 python pandas numpy dataframe

从一个非唯一的 pandas 系列开始,可以通过 .value_counts() 计算每个唯一值的数量。

>> col = pd.Series([1.0, 1.0, 2.0, 3.0, 3.0, 3.0])

0    1.0
1    1.0
2    2.0
3    3.0
4    3.0
5    3.0
dtype: object

>> stat = col.value_counts()
>> stat
3.0    3
1.0    2
2.0    1
dtype: int64

但是,如果从一个包含两列的数据框开始,一列用于唯一值,另一列用于出现次数。 (上例中的 stat)。如何将它们扩展到一个列中。

因为我想计算此类数据框中数据的中位数、均值等,所以我认为描述单列比描述两列容易得多。还是有什么方法可以在不扩展数据的情况下直接描述“value_count”数据框?

# turn `stat` into col ???

>> col.describe()
count    6.000000
mean     2.166667
std      0.983192
min      1.000000
25%      1.250000
50%      2.500000
75%      3.000000
max      3.000000 

添加测试数据

>> df = pd.DataFrame({"Name": ["A", "B", "C"], "Value": [1,2,3], "Count": [2, 10, 2]})
>> df
  Name  Value  Count
0    A      1      2
1    B      2      5
2    C      3      2

df2 = _reverse_count(df)
>> df2
  Name  Value 
0    A      1 
1    A      1
2    B      2 
3    B      2
4    B      2  
5    B      2  
6    B      2  
7    B      2
8    C      3
9    C      3  

最佳答案

您可以使用 numpy 中的 repeat 函数

import pandas as pd
import numpy as np
col = pd.Series([1.0, 1.0, 2.0, 3.0, 3.0, 3.0])
stats=col.value_counts()
pd.Series(np.repeat(stats.index,stats))
# 0    3.0
# 1    3.0
# 2    3.0
# 3    1.0
# 4    1.0
# 5    2.0
# dtype: float64

更新:

对于你可以使用的多列

df.loc[df.index.repeat(df['Count'])]

关于python - pandas dataframe中 `.value_counts()`的逆向操作是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848271/

相关文章:

python - 如何让日志记录模块函数使用不同的记录器?

python - 将 json 数据(未定义/困惑)转换为 DataFrame 的正确方法是什么?

python - 使用 pandas 转换 DataFrame

python - 将多索引系列转换为字典系列

python - 使用 Statsmodels VAR 预测时间序列并遇到 ValueError

Python如何使用panda dataframe列从3个点获取角度

python - 检查 2 个数组是否至少有一个共同元素?

python - 如何使用 PyPlot 绘制带有 2 个 slider 的 4D 数组?

python - 如何在numpy中跨多个轴连接多个数组

python - 使用 Factory Boy 进行 Django 测试时出错