【问题标题】:Count occurrences in a Pandas series of floats计算 Pandas 系列浮点数中的出现次数
【发布时间】:2018-07-11 06:44:43
【问题描述】:

我有一个数据框:

df.head()

Index                          Value
0                    1.0,1.0,1.0,1.0
1                            1.0,1.0
2                            1.0,1.0
3    3.0,3.0,3.0,3.0,3.0,3.0,4.0,4.0
4                                  4

我想统计Value 列中值的出现次数:

Index                          Value   1    2    3    4
0                    1.0,1.0,1.0,1.0   4    0    0    0
1                            1.0,1.0   2    0    0    0
2                            1.0,1.0   2    0    0    0
3    3.0,3.0,3.0,3.0,3.0,3.0,4.0,4.0   0    0    6    2
4                                  4   0    0    0    1

我以前用字符串值做过这个,但我用Counter - 我发现你不能用浮点数?

df_counts = df['Value'].apply(lambda x: pd.Series(Counter(x.split(','))), 1).fillna(0).astype(int)

【问题讨论】:

  • 你的花车总是以.0结尾吗?如果是这样,您可以将 .split 的结果转换为整数,如果有必要,进一步转换为字符串,那么计数应该可以正常工作。
  • df['Value'].apply(lambda x: pd.Series(Counter(map(float, x.split(',')))), 1).fillna(0).astype(int) 工作正常...

标签: python pandas counter series


【解决方案1】:

使用map 浮动和最后一列到integers

df_counts = (df['Value'].apply(lambda x: pd.Series(Counter(map(float, x.split(',')))), 1)
                        .fillna(0)
                        .astype(int)
                        .rename(columns=int))
print (df_counts)
   1  3  4
0  4  0  0
1  2  0  0
2  2  0  0
3  0  6  2
4  0  0  1

如果需要,最后添加所有缺失的类别,将reindexjoin 添加到原始类别:

cols = np.arange(df_counts.columns.min(), df_counts.columns.max() + 1)
df = df.join(df_counts.reindex(columns=cols, fill_value=0))
print (df)
                                 Value  1  2  3  4
Index                                             
0                      1.0,1.0,1.0,1.0  4  0  0  0
1                              1.0,1.0  2  0  0  0
2                              1.0,1.0  2  0  0  0
3      3.0,3.0,3.0,3.0,3.0,3.0,4.0,4.0  0  0  6  2
4                                    4  0  0  0  1

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 2016-06-02
    • 1970-01-01
    • 2019-05-02
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多