对于列表 a 中的每个元素,如何计算它在另一个数据框中的特定列中出现的次数
For every element in a list a, how to count how many times it appear in one specific column in another dataframe
对于字典 a 中的每个元素,我需要计算 'age' 列中的元素在 pandas 中另一个数据帧的一个特定列中出现的次数
例如,我在下面有一个字典:
a={'age':[22,38,26],'no':[1,2,3]}
我还有另一个包含几列的数据框
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
我想知道字典a中的每个元素在表B的'age'列中出现了多少次。我期望的结果是 c={'age':[22,38,26],'count':[2,2,1]}
我试过应用功能,但它不起作用。它带有语法错误,我是 Pandas 的新手,有人可以帮忙吗?谢谢!
def myfunction(y):
seriesObj = TableB.apply(lambda x: True if y in list(x) else False, axis=1)
numOfRows = len(seriesObj[seriesObj == True].index)
return numofRows
c['age']=a['age']
c['count']=a['age'].apply(myfunction)
我想知道列表a中的每个元素在表B的'age'列中出现了多少次。结果应该是
c={'age':[22,38,26],'count':[2,2,1]}
对 pd.Series
使用 value_counts
方法,对 pd.DataFrame
使用 to_dict
(pd.Series(TableB['age'])
.value_counts()
.loc[a['age']]
.rename('count')
.rename_axis('age')
.reset_index()
.to_dict(orient='list'))
您可以在年龄列上使用 pandas.Series.value_counts() 并 select 您感兴趣的结果。以下解决方案还将考虑您的 'a' 列表。
a=[22,38,26,99]
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen', 'John', 'Jane', 'Doe'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
tableB_df = pd.DataFrame(TableB)
counts_series = tableB_df['age'].value_counts()
counts_series_intersection = counts_series.loc[counts_series.index.intersection(a)]
counts_df = pd.DataFrame({'age': counts_series.index, 'count': counts_series.values})
查看以下资源以获取更多信息:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.value_counts.html
您可以只使用合并数据框来过滤掉没有出现在 a
中的值,然后只计算这些值。
import pandas as pd
a={'age':[22,38,26],'no':[1,2,3]}
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen', 'Jones', 'Davis', 'Smith'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
df_a = pd.DataFrame(a)
df_tb = pd.DataFrame(TableB)
(pd.merge(df_tb, df_a, on='age')['age']
.value_counts()
.rename('count')
.rename_axis('age')
.reset_index()
.to_dict(orient='list'))
{'age': [22, 38, 26], 'count': [2, 2, 1]}
对于字典 a 中的每个元素,我需要计算 'age' 列中的元素在 pandas 中另一个数据帧的一个特定列中出现的次数 例如,我在下面有一个字典:
a={'age':[22,38,26],'no':[1,2,3]}
我还有另一个包含几列的数据框
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
我想知道字典a中的每个元素在表B的'age'列中出现了多少次。我期望的结果是 c={'age':[22,38,26],'count':[2,2,1]}
我试过应用功能,但它不起作用。它带有语法错误,我是 Pandas 的新手,有人可以帮忙吗?谢谢!
def myfunction(y):
seriesObj = TableB.apply(lambda x: True if y in list(x) else False, axis=1)
numOfRows = len(seriesObj[seriesObj == True].index)
return numofRows
c['age']=a['age']
c['count']=a['age'].apply(myfunction)
我想知道列表a中的每个元素在表B的'age'列中出现了多少次。结果应该是
c={'age':[22,38,26],'count':[2,2,1]}
对 pd.Series
使用 value_counts
方法,对 pd.DataFrame
to_dict
(pd.Series(TableB['age'])
.value_counts()
.loc[a['age']]
.rename('count')
.rename_axis('age')
.reset_index()
.to_dict(orient='list'))
您可以在年龄列上使用 pandas.Series.value_counts() 并 select 您感兴趣的结果。以下解决方案还将考虑您的 'a' 列表。
a=[22,38,26,99]
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen', 'John', 'Jane', 'Doe'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
tableB_df = pd.DataFrame(TableB)
counts_series = tableB_df['age'].value_counts()
counts_series_intersection = counts_series.loc[counts_series.index.intersection(a)]
counts_df = pd.DataFrame({'age': counts_series.index, 'count': counts_series.values})
查看以下资源以获取更多信息:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.value_counts.html
您可以只使用合并数据框来过滤掉没有出现在 a
中的值,然后只计算这些值。
import pandas as pd
a={'age':[22,38,26],'no':[1,2,3]}
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen', 'Jones', 'Davis', 'Smith'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
df_a = pd.DataFrame(a)
df_tb = pd.DataFrame(TableB)
(pd.merge(df_tb, df_a, on='age')['age']
.value_counts()
.rename('count')
.rename_axis('age')
.reset_index()
.to_dict(orient='list'))
{'age': [22, 38, 26], 'count': [2, 2, 1]}