我正试图在 Dataframe 中插入一个字典。下面是我所拥有示例:
x y z 1 2 3 4 5 6 7 8 9
下面是我所需要示例:
x y z 1 2 {'z':3} 4 5 {'z':6} 7 8 {'z':9}
对于这个特定的应用程序,使用Pandas的全部意义在于矢量化操作是可扩展的和高效的。有没有可能把那个列转换成字典的列?我曾经尝试过使用字符串连接,但是这样它就作为字符串而不是字典存储在Pandas中,并且稍后返回时在字典周围加上引号,因为它是一个字符串。
bfnvny8b1#
这是不可能的矢量化,这里最好的方法是使用列表解析:
df['z'] = [{'z': z} for z in df['z']]
或者,使用to_dict:
to_dict
df['z'] = df[['z']].to_dict('records')
输出:
x y z 0 1 2 {'z': 3} 1 4 5 {'z': 6} 2 7 8 {'z': 9}
在300k行上
# list comprehension 102 ms ± 9.37 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) # to_dict 585 ms ± 25.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
kknvjkwl2#
示例
data = {'x': {0: 1, 1: 4, 2: 7}, 'y': {0: 2, 1: 5, 2: 8}, 'z': {0: 3, 1: 6, 2: 9}} df = pd.DataFrame(data)
代码
df['z'] = pd.Series(df[['z']].T.to_dict())
第一个月
2条答案
按热度按时间bfnvny8b1#
这是不可能的矢量化,这里最好的方法是使用列表解析:
或者,使用
to_dict
:输出:
计时
在300k行上
kknvjkwl2#
示例
代码
第一个月