我有一个包含两列的数据框,我打算将其转换为字典。第一列将成为键,第二列将成为值。
数据框:
id value
0 0 10.2
1 1 5.7
2 2 7.4
我该怎么做?
我有一个包含两列的数据框,我打算将其转换为字典。第一列将成为键,第二列将成为值。
数据框:
id value
0 0 10.2
1 1 5.7
2 2 7.4
我该怎么做?
不丢失重复条目的另一种(稍微短一些)解决方案:
>>> ptest = pd.DataFrame([['a',1],['a',2],['b',3]], columns=['id','value'])
>>> ptest
id value
0 a 1
1 a 2
2 b 3
>>> pdict = dict()
>>> for i in ptest['id'].unique().tolist():
... ptest_slice = ptest[ptest['id'] == i]
... pdict[i] = ptest_slice['value'].tolist()
...
>>> pdict
{'b': [3], 'a': [1, 2]}
# Your dataframe
lakes = pd.DataFrame({'co tp': ['DE Lake', 'Forest', 'FR Lake', 'Forest'],
'area': [10, 20, 30, 40],
'count': [7, 5, 2, 3]})
lakes.set_index('co tp', inplace=True)
area_dict = lakes.set_index("area")["count"].to_dict()
或者 @punchagan 的解决方案(我更喜欢这个)
area_dict = dict(zip(lakes.area, lakes.count))
两种都可以使用。
# replicating your dataframe
lake = pd.DataFrame({'co tp': ['DE Lake', 'Forest', 'FR Lake', 'Forest'],
'area': [10, 20, 30, 40],
'count': [7, 5, 2, 3]})
lake.set_index('co tp', inplace=True)
# to get key value using pandas
area_dict = lake.set_index('area').T.to_dict('records')[0]
print(area_dict)
output: {10: 7, 20: 5, 30: 2, 40: 3}
你需要这个IT。
area_dict = lakes.to_dict(orient='records')
from collections import defaultdict
mydict = defaultdict(list)
for k, v in zip(df.id.values,df.value.values):
mydict[k].append(v)
encoder=LabelEncoder()
df['airline_enc']=encoder.fit_transform(df['airline'])
dictAirline= df[['airline_enc','airline']].set_index('airline_enc').to_dict()
编辑:
以下方法也可以达到相同的结果:
filter_list = df[df.Col.isin(criteria)][['Col1','Col2']].values.tolist()
原始帖子:
我遇到了类似的问题,我想要将一个数据框筛选成一个结果列表。
这是我的解决方案:
filter_df = df[df.Col.isin(criteria)][['Col1','Col2']]
filter_list = filter_df.to_dict(orient='tight')
filter_list = filter_list['data']
结果: 列表的列表
这里有很多答案使用了dict(zip(...))
语法,但也可以不用zip
实现。
mydict = dict(df.values) # {0.0: 10.2, 1.0: 5.7, 2.0: 7.4}
# or for faster code, convert to a list
mydict = dict(df.values.tolist()) # {0.0: 10.2, 1.0: 5.7, 2.0: 7.4}
int
,另一个列是float
,则将其转换为object
dtype并调用dict()
。mydict = dict(df.astype('O').values) # {0: 10.2, 1: 5.7, 2: 7.4}
mydict = dict(df.astype('O').values.tolist()) # {0: 10.2, 1: 5.7, 2: 7.4}
mydict = df['value'].to_dict() # {0: 10.2, 1: 5.7, 2: 7.4}
df = pd.DataFrame([['a',1],['a',2],['a',4],['b',3],['b',4],['c',5]], columns=['id', 'value'])
df.groupby('id')['value'].apply(list).to_dict()
output : {'a': [1, 2, 4], 'b': [3, 4], 'c': [5]}
def get_dict_from_pd(df, key_col, row_col):
result = dict()
for i in set(df[key_col].values):
is_i = df[key_col] == i
result[i] = list(df[is_i][row_col].values)
return result
这是我的解决方案;一个基本的循环。