在字典中拆分元组并转换为数据框
Split a tuple within a dict and convert into dataframe
我有一个如下所示的数据框
td = {966: [('Feat1', -0.04),
('Feat2=True ', -0.02),
('Feat3 <= 20000.00', 0.01),
('Feat4=Power Supply', -0.01),
('Feat5=dada', -0.0)],
879: [('Feat8=Rare', 0.02),
('Feat11=HV', -0.01),
('Feat21=Power Supply', -0.01),
('20000.00 < Feat3 <= 50000.00', 0.01),
('Feat5=dada', -0.01)]}
我想做以下事情
a) 根据,
逗号分隔符
拆分字典中的元组
b) 将数字部分存储在数据框的 value
列中,将文本部分存储在数据框的 feature
列中
c) 重复数据框中所有值的键值(并将其存储在 key
列中)
我尝试了下面的方法,但它不是 efficient/elegant 并且不能扩展到百万行的大数据
feature=[]
value=[]
key=[]
for k, v in td.items():
for x in v:
key.append(k)
f, v = x
feature.append(f)
value.append(v)
data_tuples = list(zip(key,feature,value))
pd.DataFrame(data_tuples, columns=['key','feature','value'])
我希望我的输出如下所示
使用具有展平值的生成器理解并传递给DataFrame
构造函数:
df = pd.DataFrame()(k,b,c) for k, v in td.items() for b, c in v),
columns=['key','feature','value'])
print (df)
key feature value
0 966 Feat1 -0.04
1 966 Feat2=True -0.02
2 966 Feat3 <= 20000.00 0.01
3 966 Feat4=Power Supply -0.01
4 966 Feat5=dada -0.00
5 879 Feat8=Rare 0.02
6 879 Feat11=HV -0.01
7 879 Feat21=Power Supply -0.01
8 879 20000.00 < Feat3 <= 50000.00 0.01
9 879 Feat5=dada -0.01
您甚至可以对数据使用生成器理解来避免在内存中构建完整列表:
pd.DataFrame(([k, elt[0], elt[1]] for k,v in td.items() for elt in v),
columns = ['key', 'Feature', 'Value'])
key Feature Value
0 966 Feat1 -0.04
1 966 Feat2=True -0.02
2 966 Feat3 <= 20000.00 0.01
3 966 Feat4=Power Supply -0.01
4 966 Feat5=dada -0.00
5 879 Feat8=Rare 0.02
6 879 Feat11=HV -0.01
7 879 Feat21=Power Supply -0.01
8 879 20000.00 < Feat3 <= 50000.00 0.01
9 879 Feat5=dada -0.01
我有一个如下所示的数据框
td = {966: [('Feat1', -0.04),
('Feat2=True ', -0.02),
('Feat3 <= 20000.00', 0.01),
('Feat4=Power Supply', -0.01),
('Feat5=dada', -0.0)],
879: [('Feat8=Rare', 0.02),
('Feat11=HV', -0.01),
('Feat21=Power Supply', -0.01),
('20000.00 < Feat3 <= 50000.00', 0.01),
('Feat5=dada', -0.01)]}
我想做以下事情
a) 根据,
逗号分隔符
b) 将数字部分存储在数据框的 value
列中,将文本部分存储在数据框的 feature
列中
c) 重复数据框中所有值的键值(并将其存储在 key
列中)
我尝试了下面的方法,但它不是 efficient/elegant 并且不能扩展到百万行的大数据
feature=[]
value=[]
key=[]
for k, v in td.items():
for x in v:
key.append(k)
f, v = x
feature.append(f)
value.append(v)
data_tuples = list(zip(key,feature,value))
pd.DataFrame(data_tuples, columns=['key','feature','value'])
我希望我的输出如下所示
使用具有展平值的生成器理解并传递给DataFrame
构造函数:
df = pd.DataFrame()(k,b,c) for k, v in td.items() for b, c in v),
columns=['key','feature','value'])
print (df)
key feature value
0 966 Feat1 -0.04
1 966 Feat2=True -0.02
2 966 Feat3 <= 20000.00 0.01
3 966 Feat4=Power Supply -0.01
4 966 Feat5=dada -0.00
5 879 Feat8=Rare 0.02
6 879 Feat11=HV -0.01
7 879 Feat21=Power Supply -0.01
8 879 20000.00 < Feat3 <= 50000.00 0.01
9 879 Feat5=dada -0.01
您甚至可以对数据使用生成器理解来避免在内存中构建完整列表:
pd.DataFrame(([k, elt[0], elt[1]] for k,v in td.items() for elt in v),
columns = ['key', 'Feature', 'Value'])
key Feature Value
0 966 Feat1 -0.04
1 966 Feat2=True -0.02
2 966 Feat3 <= 20000.00 0.01
3 966 Feat4=Power Supply -0.01
4 966 Feat5=dada -0.00
5 879 Feat8=Rare 0.02
6 879 Feat11=HV -0.01
7 879 Feat21=Power Supply -0.01
8 879 20000.00 < Feat3 <= 50000.00 0.01
9 879 Feat5=dada -0.01