我有一个Pandas Dataframe,并希望将字典中的数据统一添加到我的数据帧中的所有行.目前我循环遍历字典并将值设置为我的新列.有没有更有效的方法来做到这一点?
# coding: utf-8
import pandas as pd
df = pd.DataFrame({'age' : [1, 2, 3],'name' : ['Foo', 'Bar', 'Barbie']})
d = {"blah":42,"blah-blah":"bar"}
for k,v in d.items():
df[k] = v
df
Run Code Online (Sandbox Code Playgroud)
assign如果所有键都不是数字,请使用:
df = df.assign(**d)
print (df)
age name blah blah-blah
0 1 Foo 42 bar
1 2 Bar 42 bar
2 3 Barbie 42 bar
Run Code Online (Sandbox Code Playgroud)
如果可能数字join工作不错:
d = {8:42,"blah-blah":"bar"}
df = df.join(pd.DataFrame(d, index=df.index))
print (df)
age name 8 blah-blah
0 1 Foo 42 bar
1 2 Bar 42 bar
2 3 Barbie 42 bar
Run Code Online (Sandbox Code Playgroud)
在我看来,答案是否定的。循环遍历字典中的键和值已经很有效,并且分配列df[k] = v更具可读性。请记住,将来你只想记住你为什么做某事,如果你留出一些微秒,你就不会太在意。唯一缺少的是评论你为什么这样做。
d = {"blah":42,"blah-blah":"bar"}
# Add columns to compensate for missing values in document XXX
for k,v in d.items():
df[k] = v
Run Code Online (Sandbox Code Playgroud)
时间(但错误太大......我会说它们在速度上是相同的):
您的解决方案:
809 µs ± 70 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)
df.assign():
893 µs ± 24.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4422 次 |
| 最近记录: |