Python 将列表转换为数据帧列
我有名单Python 将列表转换为数据帧列,python,pandas,list,Python,Pandas,List,我有名单 [[(1, 1, {(58091,)}, ('roma',))], [(11, 11, {(97042,)}, ('lecco',))], [(3, 3, {(97068,)}, ('pescate',))]] 我想将数据保存在4列中,如下所示 id one id two id place 1 1 58091 roma 11 11 97042 lecco 3 3 970
[[(1, 1, {(58091,)}, ('roma',))], [(11, 11, {(97042,)}, ('lecco',))], [(3, 3, {(97068,)}, ('pescate',))]]
我想将数据保存在4列中,如下所示
id one id two id place
1 1 58091 roma
11 11 97042 lecco
3 3 97068 pescate
我所做的
your_list = [[(1, 1, {(58091,)}, ('roma',))], [(11, 11, {(97042,)}, ('lecco',))], [(3, 3, {(97068,)}, ('pescate',))]]
df = DataFrame (your_list,columns=['id one','id two','id','place'])
但它不起作用我认为这是由于括号,但我不知道如何处理它们使用此特定数据格式,您可以使用具有列表理解功能的自定义函数展平列表:
data = [[(1, 1, {(58091,)}, ('roma',))], [(11, 11, {(97042,)}, ('lecco',))], [(3, 3, {(97068,)}, ('pescate',))]]
def unnest(s):
if isinstance(s, str) or isinstance(s, int):
return s
else:
for i in s:
return unnest(i)
print (pd.DataFrame([[unnest(z) for z in y] for x in data for y in x],
columns=['id one','id two','id','place']))
id one id two id place
0 1 1 58091 roma
1 11 11 97042 lecco
2 3 3 97068 pescate
从我所看到的情况来看,您的列表在我看来是不完整的:
{(58091,)},('roma',)
,为什么没有其他值时会有额外的,
?我建议确保您的输入数据(您的列表
)在将其转换为pd.DataFrame
@Sujay之前,其格式正确。这是一个包含一个元素的元组。有任何关于如何清理数据输入的提示吗?非常有用,谢谢!