Python 如何将字典值(列表类型)添加到以行号为键的excel文件中?
我有一本这样的字典:Python 如何将字典值(列表类型)添加到以行号为键的excel文件中?,python,excel,pandas,Python,Excel,Pandas,我有一本这样的字典: { 1: ['hello', 'hi', 'greeings'] 2: ['john', 'david'] 3: ['foo', 'fee', 'faa', 'fii'] } 我想创建一个名为“test”的新列,并将每个列表值添加到相应的行号中 例如,excel的外观如下所示: old column | ... | test -------------------------------------------- some data | ... | hell
{
1: ['hello', 'hi', 'greeings']
2: ['john', 'david']
3: ['foo', 'fee', 'faa', 'fii']
}
我想创建一个名为“test”的新列,并将每个列表值添加到相应的行号中
例如,excel的外观如下所示:
old column | ... | test
--------------------------------------------
some data | ... | hello, hi, greetings
some data | ... | john, david
some data | ... | foo, fee, faa, fii
编辑
excel文件已经存在,我可以成功读取它,我想在其中添加一个新列只需获取索引并将dict的映射值返回到新列中即可
df = pd.read_excel(file_name)
your_dict = {0: 'ha', 1: 'blah', 2: 'hah', 3: ['foo', 'bar']}
df['mapped'] = df.index.map(your_dict)
我使用的数据是从内存中最后一个示例数据帧加载的。无需重新加载:
df
Out[42]:
Name Age Height Hair_Width mapped
0 Tom 20 23 21 ha
1 nick 21 43 11 blah
2 krish 19 123 23 hah
3 jack 18 12 14 [foo, bar]
我在评论中提出的最初方法是:
ndf = pd.concat([df, pd.Series(your_dict, name='test')], axis=1)
ndf
Out[46]:
Name Age Height Hair_Width mapped test
0 Tom 20 23 21 ha ha
1 nick 21 43 11 blah blah
2 krish 19 123 23 hah hah
3 jack 18 12 14 [foo, bar] [foo, bar]
assert (ndf.mapped == ndf.test).all() # no err
您是否尝试过?您想使用
.xls/.xlsx
还是只想在excel中打开生成的其他类型的文件?不太可能,因为我不知道如何迭代excel行并添加到them@nonForgivingJesus使用.xls/.xlsx您不知道如何将Excel文件加载到Pandas中吗?因为这是与pd.concat([file,pd.Series(您的_dict,name='test')],axis=1)
不同的事情,而不是使用lambda
,为什么不直接使用df.index.map(您的_dict)
,它将用nan
填充缺少的值。它也比您的第二个解决方案更可取。直到有了新的解决方案^谢谢,df['mapped']=df.index.map(您的命令)
工作得很好:)