场景:我有两个列表,一个是具有名称的字符串列表,另一个是具有各种内容的数据帧列表。我试图将第一个列表中的值放入第二个列表中
数据示例:
list1 = ['jan18', 'feb18', 'mar18', 'apr18', 'may18']
列表2是具有以下结构的数据帧列表:
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的第二个元素添加到list2的第二个数据帧的第一列的所有单元格中,依此类推。输出类似于:
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)
这给了我一个错误,我相信是因为header列,它仍然是一个普通的行,而不是一个索引
问题:有合适的方法吗
您可以通过^{} 从完整路径中提取文件名。然后用^{} 换行:
使用^{} 在每个
DataFrame
中添加新列:编辑:
如果希望处理列并且
.assign
处理多个列的可读性较差,可以使用loop
处理每个DataFrame
并最后附加到list
:相关问题 更多 >
编程相关推荐