我有一个Pandas数据框,我想根据字典值创建一个新的列。
下面是我的df和字典:
data = ['One', 'Two', 'Three', 'Four']
df = pd.DataFrame(data, columns=['Count'])
dictionary = {'One':'Red', 'Two':['Red', 'Blue'], 'Three':'Green','Four':['Green','Red', 'Blue']}
这是我想达到的结果,
最好使用空白字段而不是None值,有人知道方法吗?
我尝试了以下方法:
df = df = pd.DataFrame([(k, *v) for k, v in dictionary.items()])
df.columns = ['name'] + [f'n{x}' for x in df.columns[1:]]
df
但是,对于没有多个值的键,它似乎将每个字母的实际字符串拆分到列中,如下所示:
将值Map到用分隔符(,)分隔的一列的解决方案也会很有帮助。
3条答案
按热度按时间olqngx591#
字典的值中有列表,因此需要
if-else
语句来防止*
解包字符串:详细信息:
最好使用空白字段而不是None值,有人知道方法吗?
添加
DataFrame.fillna
:如果相同的索引和行数使用
DataFrame.join
:如果原始
df_orig
与默认RangeIndex
不同,则将index=df_orig.index
添加到DataFrame
构造函数:如果需要通过
DataFrame.merge
中的左连接按name
列合并:mwg9r5ms2#
使用
isinstance
检查v
是否为list
,并确保未将字符串解压缩为字符:输出:
加入另一个 Dataframe
使用
join
或merge
,具体取决于您是要基于索引还是"name"列进行组合:输出:
使用
df
:mqkwyuun3#
另一种可能的解决方案:
输出: