python - 来自多个不同长度列表的 Pandas 长格式 DataFrame

标签 python pandas dataframe

假设我有多个列表

A = [1, 2, 3]
B = [1, 4]

我想生成一个长格式的 Pandas DataFrame,如下所示:

type | value
------------
A    | 1
A    | 2
A    | 3
B    | 1
B    | 4

实现此目标的最简单方法是什么?宽格式和融化的方式是不可能的(?),因为列表可能有不同的长度。

最佳答案

type 创建字典并通过列表理解创建元组列表:

A = [1, 2, 3]
B = [1, 4]

d = {'A':A,'B':B}

print ([(k, y) for k, v in d.items() for y in v])
[('A', 1), ('A', 2), ('A', 3), ('B', 1), ('B', 4)]

df = pd.DataFrame([(k, y) for k, v in d.items() for y in v], columns=['type','value'])
print (df)
  type  value
0    A      1
1    A      2
2    A      3
3    B      1
4    B      4

另一种解决方案,如果输入是列表的列表并且 type 应该是整数:

L = [A,B]
df = pd.DataFrame([(k, y) for k, v in enumerate(L) for y in v], columns=['type','value'])
print (df)
   type  value
0     0      1
1     0      2
2     0      3
3     1      1
4     1      4

关于python - 来自多个不同长度列表的 Pandas 长格式 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53651598/

相关文章:

python celery : Retrieve tasks arguments if there's an exception

python - os.path.basename() 和 os.path.dirname() 有什么区别?

python - 如何计算 Keras 的 Pandas DataFrame 的类权重?

r - 从 1 个数据帧中的多个时间序列的开头和结尾有效地删除缺失值

python - dunder方法是继承的吗?

python - Pandas 数据框隐藏索引功能?

python - 有没有一种优雅的方法可以在Python中调用同一对象的方法列表?

python - 在最近的日期合并数据框

python - 如果其中一个列值为 1,如何使用 groupby 并应用 DataFrames 将组列中的所有值设置为 1?

R 编程,使用自定义脚本(针对每个 i)进行逐行数据帧计算以解决 "bridge game"