Skip to main content
 首页 » 编程设计

python之列表列表中的DataFrame

2025年05月04日22cloudgamer

我有列表的列表

u=[[1, 1], [2, 1, 1, 1], [2, 2, 1, 1, 1, 1, 2, 2], [2, 2, 2, 2, 2, 3, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2], [2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2]] 

我想使用 pandas 创建一个 DataFrame,其中行由 u 的长度索引,列由此列表列表中的数字组给出。

我希望这个DataFrame的元素是元素出现的频率。例如,从上面,我想得到下表

在上表中,带有 1 的列给出了每个列表中的个数,而 2 给出了 2 的个数。在单元格 (1,1) 中,数字 2 是通过计算第一个列表中的个数获得的是 [1,1]。在单元格 (2,1) 中,数字 3 是通过计算列表 [2,1,1,1] 中 1 的数量获得的,而在单元格 (2,2) 中,数字 2 是通过计算两个的频率获得的在列表 [2,1,1,1] 中,始终重复相同的过程。

我知道要计算列表中重复元素的数量,我必须使用计数。例如 [1,1,1,2].count(1)=3 我想知道的是使用 Pandas 来获得上面的 DataFrame。可以这样做吗?

请您参考如下方法:

您可以使用 Counter 将列表转换为字典。然后使用 pd.DataFrame 转换该字典

import pandas as pd 
from collections import Counter 
df = pd.DataFrame([Counter(u_) for u_ in u]).fillna(0) 

注意 这里没有 4,你可以手动将它添加到字典中,或者只在 dataframe 中添加 4 列,即 df[4] = 0