我需要关于循环遍历.csv文件、转换为字典和存储每个匹配键的列表结果列表(总计3个键)的最佳方法的指导,最后将它们存储到主列表向量中,以便以后作为函数的可迭代输入。
Using pandas to read in a long .csv as below:
mach,elem,cycle,Qty's,Sizes
x,y,1,12,68
x,y,1,24,72
x,y,1,32,76
...
(x,y,1) = Keys
(12,68) = values for each matching set of Keys
我需要将'x','y',1作为字典中的一个键值,其中(12,68)是值。然后,cols 0:3中的所有匹配键都应该将值存储为列表列表;因此,从上面看:
[x,y,1] = ((12, 68),(24,72),(32,76)
[x,y,2] = ...etc
然后,将它们存储到主列表中,以便以后作为函数的输入:
master = [[x,y,1], [x,y,2],...]
我有许多键值组合,因此最终列表将很大。我可以手动设置熊猫;做类似的事情(不包括;快速示例):
x_3_vals = x_3.filter(items=["Qty's", "Sizes"])
x_3_vals = x_3_vals.values.tolist()
x_2_vals = x_2.filter(items=["Qty's", "Sizes"])
x_2_vals = x_2_vals.values.tolist()
...
mster = [x_1_vals, x_2_vals, x_3_vals]
但是,我需要一种方法循环遍历长.csv文件,并自动存储/创建列表列表。
列标题在初始文件中不会更改;只有值/键。
发布于 2022-08-31 06:05:38
好吧,我回答了我自己的问题--不需要字典,这太复杂了。对于任何寻找类似问题的人来说:
在.csv中读取,创建一个“键”框架;然后使用键作为筛选器循环遍历原始帧,将所需的两个列保存为进程中的列表列表,然后将它们存储在主列表中供以后使用。
键帧和主列表是按同步顺序排列的;因此,除非您必须拉出列表的一部分,而且您不确定键在哪个索引中,否则不需要使用字典。
可能有一个更快的方法;但为了清楚起见,这是可行的:
df = pd.read_csv('Inputs\PM_cycle_test.csv', skip_blank_lines=True, index_col=False)
df['Key'] = df['PM'] + df['Grade'] + df['Cycle'].astype(str)
df_keys = df.filter(items=["Key"]).drop_duplicates().values.tolist()
mstr = []
for idx, val in enumerate(df_keys):
for _ in enumerate(df):
df_filter = df.loc[df['Key'].isin(val)].filter(items=["Qty's", "Sizes"])
tmp = df_filter.values.tolist()
mstr.append(tmp)
rprint(f'{df_keys[idx]}-> {mstr[idx]}')
#rprint(df_keys)
rprint(f'{len(mstr)} Items;')
https://stackoverflow.com/questions/73547505
复制相似问题