首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为熊猫中的每一行计算列中的特定值

为熊猫中的每一行计算列中的特定值
EN

Stack Overflow用户
提问于 2022-12-04 11:47:14
回答 2查看 25关注 0票数 -1

你好,我有一个数据文件,如:

代码语言:javascript
复制
Species COL1 COL2 COL3 COL4 COL5
SP1     0    0    0    1-2  0-1-2
SP2     1-2  2    0    1    0
SP3     0-1  1    2    0    1-2 

我想添加新的列来计算每一行的特定唯一值的数目,例如:

代码语言:javascript
复制
Species COL1 COL2 COL3 COL4 COL5  count_0 count_1-2 count_0-1-2 count_1 count_2 
SP1     0    0    0    1-2  0-1-2 3       1         1           0       0
SP2     1-2  2    0    1    0     2       1         0           1       1
SP3     0-1  1    2    0    1-2   1       1         0           2       1

有人知道吗?

EN

回答 2

Stack Overflow用户

发布于 2022-12-04 11:54:09

您可以使用熊猫图书馆中的熊猫图书馆方法来计算数据中每一行中每个唯一值的出现次数。

代码语言:javascript
复制
# Loop through each row of the dataframe
for index, row in df.iterrows():
    # Create a series object for the current row
    series = pd.Series(row)

    # Count the number of occurrences of each unique value in the row
    counts = series.value_counts()

    # Add the count values to the current row of the dataframe
    df.loc[index, 'count_0'] = counts[0] if 0 in counts else 0
    df.loc[index, 'count_1-2'] = counts['1-2'] if '1-2' in counts else 0
    df.loc[index, 'count_0-1-2'] = counts['0-1-2'] if '0-1-2' in counts else 0
    df.loc[index, 'count_1'] = counts[1] if 1 in counts else 0
    df.loc[index, 'count_2'] = counts[2] if 2 in counts else 0
票数 0
EN

Stack Overflow用户

发布于 2022-12-04 12:15:58

示例

代码语言:javascript
复制
data = {'Species': {0: 'SP1', 1: 'SP2', 2: 'SP3'},
        'COL1': {0: '0', 1: '1-2', 2: '0-1'},
        'COL2': {0: '0', 1: '2', 2: '1'},
        'COL3': {0: '0', 1: '0', 2: '2'},
        'COL4': {0: '1-2', 1: '1', 2: '0'},
        'COL5': {0: '0-1-2', 1: '0', 2: '1-2'}}
df = pd.DataFrame(data)

代码语言:javascript
复制
df1 = (df.set_index('Species').apply(lambda x: x.value_counts(), axis=1)
       .add_prefix('count_').fillna(0).astype('int'))

df1

代码语言:javascript
复制
         count_0    count_0-1   count_0-1-2 count_1 count_1-2   count_2
Species                     
SP1      3          0            1          0       1           0
SP2      2          0            0          1       1           1
SP3      1          1            0          1       1           1

使期望的输出

concat & df1

代码语言:javascript
复制
pd.concat([df.set_index('Species'), df1], axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74675276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档