[英]Create a new data frame of counts from a list corresponding to column index values from a different data frame
我有两个独特的列表,例如:
a = [12, 12, 12, 3, 4, 5]
b = [1, 2, 4, 5, 6, 12, 4, 7, 9, 2, 3, 5, 6]
df.columns
Index(['lep', 'eta', 'phi', 'missing energy magn', 'missing energy phi', 'jet]) etc
(显然,专栏比我在这里写的要长)。
列表 a 和 b 对应于列索引值。
我想用以下列创建一个新的 dataframe:
Index Value, Column Name, Count of a, Count of b
因此,如果'12'在列表a中出现三次,在列表b中出现两次并且对应于df中的'foo',则新的dataframe中的相应行将返回:12, foo, 3, 2
我知道如何通过四个循环获取列表值的计数,但我不确定如何定位索引值
所需的 output 类似于(基于上述数据):
new_df.head()
-索引、名称、count_a、count_b
您可以使用count()来计算列表中元素出现的次数,并使用enumerate()来遍历列表并记录迭代次数。
所以你的代码变成:
import pandas as pd
a = [12, 12, 12, 3, 4, 5]
b = [1, 2, 4, 5, 6, 12, 4, 7, 9, 2, 3, 5, 6]
elements = ['lep', 'eta', 'phi', 'missing energy magn', 'missing energy phi', 'jet'] # it is not necessary to declare it as an index, it is a simple list
df_data = []
for i, el in enumerate(elements):
tmp_dict = {
'name': el,
'count_a': a.count(i),
'count_b': b.count(i)
}
df_data.append(tmp_dict)
df = pd.DataFrame(df_data)
print(df)
Output 将是:
name count_a count_b
0 lep 0 0
1 eta 0 1
2 phi 0 2
3 missing energy magn 1 1
4 missing energy phi 1 2
5 jet 1 2
显然,无论列表中的元素数量如何,这种方法都有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.