首页 > 解决方案 > Python pandas,遍历数据框行

问题描述

我想遍历数据框的行,我已经从 Excel 文件中读取了这个数据框,它有 3 列,我尝试获取每一行的数据并将其转换为字典,然后将其存储在列表中。

字典格式:{"subreddit_group": string, "links/caption": list, "Subreddits/flair": list}

我的代码:

data_list = []
linkcap_list = []
subredditflair_list = []
grp = ""
data = pd.read_excel("data.xlsx")
df = pd.DataFrame(data, columns=["subreddit_group", "links/caption", "subreddits/flair"])
data_raw = {}
for index, row in df.iterrows():
    grp = row["subreddit_group"]
    elms = row['links/caption'].split(",,")
    for elm in elms:
        elm_linkcap = {}
        try:
            link, cap = elm.split("^")
            elm_linkcap = {"link": link, "caption": cap}
            linkcap_list.append(elm_linkcap)
        except ValueError as e:
            elm_linkcap = {"link": elm, "caption": "none"}
            linkcap_list.append(elm_linkcap)
    elms = row['subreddits/flair'].split(",")
    for elm in elms:
        elm_subredditflair = {}
        try:
            subreddit, flair = elm.split("^")
            elm_subredditflair = {"subreddit": subreddit, "flair": flair}
            subredditflair_list.append(elm_subredditflair)
        except ValueError as e:
            elm_subredditflair = {"subreddit": elm, "flair": "none"}
            subredditflair_list.append(elm_subredditflair)
    data_raw = {"group": grp, "links_caps": linkcap_list, "subreddits_flairs": subredditflair_list}
    data_list.append(data_raw)

我想在每一行中获取该列的值,但是每次我遍历一行时,我都会得到整列的值,我尝试在列名之后添加一个索引来访问特定的单元格,但是我得到了一个奇怪的结果,例如这样:

row['links/caption'][1]

如何遍历数据框行并访问每列的值,而不是整列的值,我希望我的问题足够清楚,谢谢。编辑1:使用元组。

data_list = []
linkcap_list = []
subredditflair_list = []
grp = ""
data = pd.read_excel("data.xlsx")
df = pd.DataFrame(data, columns=["subreddit_group", "links/caption", "subreddits/flair"])
data_raw = {}
for row in df.itertuples():
    print(row)
    grp = row[1]
    elms_linkscaps = row[2].split(",,")
    elms_subredditsflairs = row[3].split(",")
    print(elms_subredditsflairs)
    print(elms_linkscaps)
    exit()
    for elm in elms_linkscaps:
        elm_linkcap = {}
        try:
            link, cap = elm.split("^")
            elm_linkcap = {"link": link, "caption": cap}
            linkcap_list.append(elm_linkcap)
        except ValueError as e:
            elm_linkcap = {"link": elm, "caption": "none"}
            linkcap_list.append(elm_linkcap)
    for elm in elms_subredditsflairs:
        elm_subredditflair = {}
        try:
            subreddit, flair = elm.split("^")
            elm_subredditflair = {"subreddit": subreddit, "flair": flair}
            subredditflair_list.append(elm_subredditflair)
        except ValueError as e:
            elm_subredditflair = {"subreddit": elm, "flair": "none"}
            subredditflair_list.append(elm_subredditflair)
    data_raw = {"group": grp, "links_caps": linkcap_list, "subreddits_flairs": subredditflair_list}
    data_list.append(data_raw)

标签: pythonpandasdataframe

解决方案


推荐阅读