多个熊猫数据框中列的值频率

时间:2020-09-06 15:29:26

标签: python pandas dataframe

我有多个熊猫数据帧(超过70个),每个数据帧具有相同的列。假设每个数据帧中只有10行。我想在每个数据框中找到列A'的值出现并将其列出。示例:

# Import pandas library 
import pandas as pd 
  
# initialize list of lists 
data = [['tom', 10], ['nick', 15], ['juli', 14]] 
  
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Age']) 

data = [['sam', 12], ['nick', 15], ['juli', 14]] 

df2 = pd.DataFrame(data, columns = ['Name', 'Age']) 

我期望输出为

Name  Age
 tom    1
 sam    1
nick    2
juli    2

5 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

from collections import Counter

d={'df1':df1, 'df2':df2, ..., 'df70':df70}
l=[list(d[i]['Name']) for i in d]
m=sum(l, [])
result=Counter(m)

print(result)

答案 1 :(得分:3)

您是否希望所有数据帧中的main = pd.concat([df,df2]) main["Name"].value_counts() 列的值计数?

juli    2
nick    2
sam     1
tom     1
Name: Name, dtype: int64

df = pd.concat([df, df2]).groupby('Name', as_index=False).count()
df.rename(columns={'Age': 'Count'}, inplace=True)
print(df)

   Name  Count
0  juli    2
1  nick    2
2   sam    1
3   tom    1

答案 2 :(得分:1)

您可以尝试以下方法:

df5 = pd.DataFrame(data={"Genre":dataYearScore['Genre'], "Score": dataYearScore['Score']})
df5 = df5.assign(Genre=df5['Genre'].str.split(',')).explode('Genre').reset_index(drop=True)

genre_list5 = []
avg_scores5 = []

for genre in df5["Genre"].unique():
    genre_list5.append(genre)
    avg_scores5.append(df5.loc[df5["Genre"]==genre, "Score"].mean())

plt.bar(genre_list5, avg_scores5, width = 0.8)
plt.xlabel('Genre')
plt.ylabel('Average Score')
plt.xticks(rotation=65)
plt.title('Average Score for Each Genre')
plt.show()

答案 3 :(得分:1)

如果您的数据帧连接成本不高,则可以使用此功能:

pd.concat([x['Name'] for x in [df,df2]]).value_counts()

nick    2
juli    2
tom     1
sam     1

答案 4 :(得分:1)

您可以尝试以下方法:

ArrayList<String>
相关问题