【发布时间】:2021-05-06 19:53:03
【问题描述】:
我有一个如下所示的 DataFrame:
df = pd.DataFrame({"id": ["200"], "0": ["miner"], "1": ["miner, manager"], "2": ["mining, dude number 7"], "3": ["marshall"]})
我想把它变成一个字典列表,其中键为 "id" 在 "value" 上重复,它们是每一列的值 @987654322 @如果它存在看起来像一个输出:
list_dict_from_df = [{"id": "200", "value": [{"lower": "miner"}]}, {"id": "200", "value": [{"lower": "miner"}, {"lower": "manager"}]}, {"id": "200", "value": [{"lower": "mining"}, {"lower": "dude number 7"}]}, {"id": "200", "value": [{"lower": "marshall"}]}]
我目前正在循环中使用蛮力方法来执行此操作:
d_range = range(1, len(df.columns)
d_out = []
for i in d_range:
d_out.append({"id": code, "value": [{"lower": col} for col in df.iloc[:, i].str.split(',')]})
这让我很接近:
d_out:
[{"id": 200, "value": [{"lower": ["miner"]}]}, {"id": 2000, "value": [{"lower": ["miner", "manager"]}]}]
但是,我不希望字符串“miner”包含在列表中,而是用“,”分隔,并且它们的每个元素都包含在一个 id 值中,如上所示。
如果可能的话,我更喜欢找到一个非反模式的 DataFrame 解决方案(不是 iterrows() 类型)...
【问题讨论】:
标签: python pandas list dataframe dictionary