[英]python dictionary to create new data frame column
我创建了一个字典,其中包含来自两个单独文件中两列的唯一值。 这两列的等效值格式不同,因此无法正确合并。
数据框A:
A B
1 dfg
2 srg
3 sgf
4 sfh
3 srg
6 srg
1 sfg
d={1: 1.102832,
2: 2.102832,
3: 3.102832,
4: 4.102832,
5: 5.102832,
6: 6.102832,
7: 7.102832}
最终产品应如下所示:
A B C
1 dfg 1.102832
2 srg 2.102832
3 sgf 3.102832
4 sfh 4.102832
3 srg 3.102832
6 srg 6.102832
1 sfg 1.102832
我尝试如下使用pandas.Series.map:
s["C"]=s["A"].map(dictionary)
不幸的是,我的结果看起来像这样:
A B C
1 dfg NaN
2 srg NaN
3 sgf NaN
4 sfh NaN
3 srg NaN
6 srg NaN
1 sfg NaN
我想念什么?
for key,value in d.iteritems():
A.ix[A['A']==key,'C'] = value
假设您的第一个数据帧称为“ A”,而您的字典称为“ d”
从理论上讲,您尝试过的应该有效。 但是,你必须小心留意的类型中值的s['A']
并在按键d
免得他们不同样比较。 例如,如果s['A']
包含字符串,而d.keys()
包含整数,则
import pandas as pd
d = {1: 1.102832,
2: 2.102832,
3: 3.102832,
4: 4.102832,
5: 5.102832,
6: 6.102832,
7: 7.102832}
s = pd.DataFrame({
'A':'1 2 3 4 3 6 1'.split(),
'B':'dfg srg sgf sfh srg srg sfg'.split()})
s['C'] = s['A'].map(d)
print(s)
产量
A B C
0 1 dfg NaN
1 2 srg NaN
2 3 sgf NaN
3 4 sfh NaN
4 3 srg NaN
5 6 srg NaN
6 1 sfg NaN
而如果将s['A']
转换为数值:
s['A'] = pd.to_numeric(s['A'], errors='coerce')
s['C'] = s['A'].map(d)
print(s)
那么您将获得所需的结果:
A B C
0 1 dfg 1.102832
1 2 srg 2.102832
2 3 sgf 3.102832
3 4 sfh 4.102832
4 3 srg 3.102832
5 6 srg 6.102832
6 1 sfg 1.102832
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.