Pandas: 如何统计Python中不同列的混合字符大小写值?

Pandas: How to count values of mixed character cases in different columns in Python?

我有一个包含不同列的数据框

COUNTRY COUNTRY1 COUNTRY2 hp
Italy uk france 50
uk france italy 150

我想按行计算不同列中的国家(而不使用 melt)来获取和输出如下:

Italy 2

France 2

Uk 2

我尝试了 locgroupby 等不同的选项,但它不起作用。

谢谢

@Henry Yik 的建议效率更高,结合 groupby 可以解决你的问题。 另外,试试这个:

def count_entries(df, col_name):
    
    country_count = {}
    
    # Extract column from DataFrame: col
    col = df[col_name]
    
    # Iterate over country column in DataFrame
    for entry in col:
        # If the country is in langs_count, add 1
        if entry in country_count.keys():
            country_count[entry] = country_count[entry] + 1 
        # Else add the language to langs_count, set the value to 1
        else:
            country_count[entry] = 1

    return country_count
print(df.columns)

# Call count_entries(): result
for col_name in df.columns:
    result = count_entries(df, col_name)
    print(result)

您可以通过 .filter(), then .stack()COUNTRY* 列过滤为包含国家/地区名称的单个列。

由于您的国名是混合字符大小写,您可以通过str.title() before we count the occurences with .value_counts()将国名改为Title case(首字母大写),如下:

df.filter(like='COUNTRY').stack().str.title().value_counts()

结果:

Italy     2
Uk        2
France    2
dtype: int64