gpt4 book ai didi

python - 将列表的值设置为数据帧列表

转载 作者:行者123 更新时间:2023-11-30 22:12:00 25 4
gpt4 key购买 nike

场景:我有 2 个列表,一个是带有名称的字符串列表,另一个是具有不同内容的数据帧列表。我试图将第一个列表中的值放入第二个列表中。

数据示例:

list1 = ['jan18', 'feb18', 'mar18', 'apr18', 'may18']

列表二是具有以下结构的数据帧列表:

DF1_LIST2:
row1 row2 row3 row4
5 55 12
3 51 11
3 52 11
9 59 11

DF2_LIST2:
row1 row2 row3 row4
9 91 7
5 1 23
3 24 56
9 68 21

我的目标是将list1的第一个元素添加到list2的第一个数据帧的第一列中的所有单元格中;然后将 list2 的第二个元素添加到 list 2 的第二个数据帧的第一列的所有单元格,依此类推。输出将类似于:

DF1_LIST2:
row1 row2 row3 row4
jan18 5 55 12
jan18 3 51 11
jan18 3 52 11
jan18 9 59 11

DF2_LIST2:
row1 row2 row3 row4
feb18 9 91 7
feb18 5 1 23
feb18 3 24 56
feb18 9 68 21

到目前为止,我尝试建立一个三重 for 循环,第一个迭代 list1 的项目,第二个迭代 list2 的数据帧,第三个迭代每个数据帧的行:

import pandas as pd
import os
from os import listdir
from os.path import isfile, join
import glob

# Get File Names
mypath = "//DGMS/Desktop/uploaded"
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

# Get dates
onlyfiles = [name.split("_")[0] for name in onlyfiles]
df_of_names = pd.DataFrame(onlyfiles)

# Get File Contents
all_files = glob.glob(os.path.join(mypath, "*.xls*"))
contentdataframes = [pd.read_excel(f) for f in all_files]

for dfs in contentdataframes:
dfs.insert(0,"date*","")
dfs.insert(1,"apply*","")

for date in onlyfiles:
for dfs in contentdataframes:
for row in dfs.itertuples(index=True):
dfs.set_value(row,0,date)

这给了我一个错误,我相信是因为标题列,它仍然算作普通行,而不是索引。

问题:有正确的方法吗?

最佳答案

使用assign在每个 DataFrame 中添加新列:

d = [pd.read_excel(f).assign(row1=os.path.basename(f).split('.')[0].split('_')[0])
for f in all_files]

编辑:

如果想要使用列和多列的 .assign 可读性较差,可以使用 loop 来处理每个 DataFrame 和最后一个附加到列表:

contentdataframes = []
for f in all_files:
df = pd.read_excel(f)
df['col1'] = 10
df['col2'] = 'string1'
df['row1'] = os.path.basename(f).split('.')[0].split('_')[0]
contentdataframes.append(df)

关于python - 将列表的值设置为数据帧列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com