如何为Pandas DataFrame动态初始化列名与列数据
问题描述
我希望基于一个列表获取数据,并将列表元素作为列名,对应的数据作为该列的数值。以下是我写的示例代码:
import pandas as pd lis = {'a', 'b', 'c'} output_df = pd.DataFrame() u = 0 for i in lis: get_data = download_data_from_csv(xxxxxxxxxxxx_i) # Assume get_data is a column array output_df.at[u, 'Name'] = i output_df['Name'] = get_data u = u+1
请问如何遍历属性列表时,将每个属性设为独立列并填充对应数据?期望输出如下:
a b c 1 7 4 6 10 9
其中a对应数据为(1,6),b对应(7,10),c对应(4,9)。
解决方案
你的代码问题在于循环中反复操作同一个Name列,且at的赋值逻辑不符合需求。可以通过两种简洁方式实现目标:
方式一:先构建字典再生成DataFrame
这种方式效率更高,先把所有列名与对应数据存入字典,再一次性生成DataFrame:
import pandas as pd lis = {'a', 'b', 'c'} data_dict = {} for col_name in lis: # 替换为你的实际数据获取逻辑 get_data = download_data_from_csv(f"xxxxxxxxxxxx_{col_name}") data_dict[col_name] = get_data # 字典的键作为列名,值作为对应列的数据 output_df = pd.DataFrame(data_dict)
方式二:循环中直接新增列
如果需要逐步构建DataFrame,可在每次循环中直接为DataFrame添加新列:
import pandas as pd lis = {'a', 'b', 'c'} output_df = pd.DataFrame() for col_name in lis: get_data = download_data_from_csv(f"xxxxxxxxxxxx_{col_name}") # 直接以列名为键赋值,自动创建对应新列 output_df[col_name] = get_data
注意:如果需要固定列的顺序,建议将lis从集合改为列表['a', 'b', 'c'],因为集合的遍历顺序是不确定的。
内容的提问来源于stack exchange,提问作者Dsp guy sam
相关产品推荐
相关产品推荐

