Python - 将.csv读取为具有多个键的字典,并将匹配的键值存储为嵌套列表列表



我需要关于循环.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(是值。然后,列0:3中的所有匹配键都应将值存储为列表列表;所以从上面看:

[x,y,1] = ((12, 68),(24,72),(32,76)
[x,y,2] = ...etc

然后,将这些存储到主列表中,以便稍后作为函数的输入:

master = [[x,y,1], [x,y,2],...]

我有许多键值组合;因此结束列表将很大。我可以手动设置熊猫;做一些类似(y不包括在内;快速示例(:

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文件并自动存储/创建列表列表。

列标题在初始文件中不会更改;仅值/键。

好吧,我回答了我自己的问题——不需要字典,这太复杂了。对于任何搜索类似问题的人:

读取.csv,创建一个";键";框架然后使用Key作为过滤器循环浏览原始帧,在此过程中将两个所需列保存为列表列表,然后将它们存储在主列表中以供以后使用。

关键帧&主列表按同步顺序排列;所以不需要字典,除非你必须提取列表的一部分,并且你不确定密钥在哪个索引中

可能有一种更快的方法;但为了清楚起见,这是有效的:

df = pd.read_csv('InputsPM_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;')

最新更新