Adr*_*tes 8 python list dataframe data-structures pandas
我有一个Python中具有不同数量或元素的事务/元组列表,如下所示:
lst = [('apple','banana','carrots'),('apple',),('banana','carrots',)]
Run Code Online (Sandbox Code Playgroud)
我想以表格形式(最好是a pd.DataFrame)存储此列表,例如:
apple banana carrots
0 1 1 1
1 1 0 0
2 0 1 1
Run Code Online (Sandbox Code Playgroud)
但如果尝试直接使用转换pd.DataFrame,我得到他的代替:
pd.DataFrame(lst)
Run Code Online (Sandbox Code Playgroud)
0 1 2
0 apple banana carrots
1 apple None None
2 banana carrots None
Run Code Online (Sandbox Code Playgroud)
如何将此类型的列表转换为二进制表?
Flo*_*oor 10
如果你使用value_counts列,即非常简单
pd.DataFrame(lst).apply(pd.value_counts,1).fillna(0)
apple banana carrots
0 1.0 1.0 1.0
1 1.0 0.0 0.0
2 0.0 1.0 1.0
Run Code Online (Sandbox Code Playgroud)
以下方法:
定义lst
在lst中查找所有唯一字符串
计算列表中每个元组的出现次数
创建数据框
在这里实施:
import pandas as pd
import numpy as np
lst = [('apple','banana','carrots'),('apple',),('banana','carrots',)]
cols = np.unique(sum(tuple(lst),()))
data = [[i.count(j) for j in cols] for i in lst]
df = pd.DataFrame(columns=cols, data=data)
Run Code Online (Sandbox Code Playgroud)
输出:
apple banana carrots
0 1 1 1
1 1 0 0
2 0 1 1
Run Code Online (Sandbox Code Playgroud)
我们试试get_dummies + groupby+ sum-
pd.get_dummies(pd.DataFrame(lst)).groupby(by=lambda x: x.split('_')[1], axis=1).sum()
apple banana carrots
0 1 1 1
1 1 0 0
2 0 1 1
Run Code Online (Sandbox Code Playgroud)
这应该很快.
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |