【发布时间】:2019-07-09 10:27:40
【问题描述】:
我有一个数据框,其中有一列包含重复值,因为我想要将其转换为仅具有唯一值的多年数据。为此,我希望将其他列转换为字典,将所有年份的数据显示为格式为 {'year': value} 的键值对。必须对除具有唯一值的列之外的所有其他列执行此操作。 我的输入数据框如下所示
数据框的可重现代码
df = pd.DataFrame({
'A': {0: 'a1', 1: 'a2', 2: 'a3', 3: 'a4'},
'Unique': {0: 'b1', 1: 'b1', 2: 'b2', 3: 'b2'},
'Year': {0: 2017, 1: 2008, 2: 2017, 3: 2008} ,
'C': {0: 'c1', 1: 'c2', 2: 'c3', 3: 'c4'}
})
到目前为止,我已经尝试将每个变量的值-年份组合放入列表中,并将其添加到字典中,以期将其转换回数据框。但这不会让我得到与预期输出相同的结果。
到目前为止我所做的示例是
B_list = list(df["Unique"])
temp_dict = {}
new_dict = {}
for a in set(Unique_list):
i = 0
new_dict[a] = {}
temp_list = []
for index, row in df.iterrows():
if df["Unique"][i] == a:
temp_list.append(str(df["Year"][i]) +": " + df["A"][i])
i = i+1
new_dict[a] = temp_list
输出字典为
{'b1': ['2017: a1', '2008: a2'],
'b2': ['2017: a3', '2008: a4']}
当我变成一个数据框时转换为一个
Resulting data frame which is not correct
虽然预期的输出是格式中的数据框
有什么帮助吗?提前致谢。
【问题讨论】:
-
请不要使用屏幕截图,而是将数据框粘贴到代码块中。
-
@RvdBerg 这是我第一次提问。因此,当我尝试嵌入 daraframe 时,它会给出一条消息,说我需要 10 个声誉才能这样做。请告诉我是否有其他方法可以做到这一点?
-
我不认为你想在数据框中使用字典,这是一种反模式。我想你想在这里使用索引。
-
Sachi,你做得很好。只需将数据框作为其值发布在“```” 之间
标签: python pandas dataframe dictionary