Python,遍历数据帧行

2024-10-02 14:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想迭代一个数据帧的行,我从一个Excel文件中读取了这个datafarame,它有3列,我试图获取每行的数据,并将其转换为dict,然后将其存储在一个列表中

Dict格式:{"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]

如何遍历dataframe行并访问每个列的值,而不是整个列的值,我希望我的问题足够清楚,谢谢。 编辑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)

Tags: datagrouplinklinkslistrowsplitelm