我有一本字典,我希望将其映射到当前数据框并创建一个新列。我在元组中有键,它映射到我的数据帧中的两个不同的列。
dict = {('County', 'State'):'CountyType'}
df = pd.DataFrame(data=['County','State'])
我想创建一个新列CountyType
,使用dict
映射到df
中的两列。但是,执行以下操作会给我一个错误。怎么可能这样做?
df['CountyType'] = (list(zip(df.County,df.State)))
df = df.replace({'CountyType': county_type_dict)
答案 0 :(得分:3)
您可以从两个系列中创建MultiIndex
然后映射。来自@ALollz的数据。
df['CountyType'] = df.set_index(['County', 'State']).index.map(dct.get)
print(df)
County State CountyType
0 A 1 One
1 A 2 None
2 B 1 None
3 B 2 Two
4 B 3 Three
答案 1 :(得分:0)
如果您有以下字典,其中元组为键,而DataFrame
的字符对应于元组值
import pandas as pd
dct = {('A', 1): 'One', ('B', 2): 'Two', ('B', 3): 'Three'}
df = pd.DataFrame({'County': ['A', 'A', 'B', 'B', 'B'],
'State': [1, 2, 1, 2, 3]})
您可以从Series
创建df
个元组,然后只使用.map()
df['CountyType'] = pd.Series(list(zip(df.County, df.State))).map(dct)
结果
County State CountyType
0 A 1 One
1 A 2 NaN
2 B 1 NaN
3 B 2 Two
4 B 3 Three