我已经从Excel电子表格中导入了一组数据,现在有了常规的DataFrame。
这是我原始数据框的样子:
Meter Number Site Name Size
123 Site A 1
456 Site B 10
现在,我必须为每个仪表增加每月的能量输出值。这意味着我需要为数据框中的每个现有行添加12行。为了简单起见,每个现有行的12行可以相同,但是要根据数组的大小进行缩放。因此,我需要新的DataFrame看起来像下表。稍后,我将把它与站点的测量数据进行比较。
有没有人建议如何使用Pandas完成此任务? 这是新DataFrame的外观。
Meter Number Site Name Size Month Expected Energy
123 Site A 1 Jan .2
123 Site A 1 Feb .3
... ... ... ... ...
123 Site A 1 Dec .25
456 Site B 10 Jan 2.0
456 Site B 10 Feb 3.0
... ... ... ... ...
456 Site B 10 Dec 2.5
我浏览了有关合并DataFrame的Pandas文档以及MultiIndex指南,但是我无法弄清楚如何完成此任务。
每月的期望值列表可以存储为字典,列表或numpy数组。我现在要手动输入。
monthly_values = {'Jan': 0.2, 'Feb': 0.3, ... 'Dec': 0.25}
感谢您的帮助!
答案 0 :(得分:0)
下面是可以为您提供所需值的代码。(虽然有点难看)
meter = pd.DataFrame({'Meter Number': [123,456], 'Site Number': ['A','B'], 'Size' : [1,10]}) # creating dataframe
meter = meter.reindex(meter.index.repeat(12)) # expanding the dataframe as mentioned
meter['Month'] = list(range(1,len(meter)+1)) # generating Month column with numbers
t = len(meter) // 12
month = list(range(1,13)) # dummy list with month numbers. Enter month names insted of numbers if you required
meter.Month = month*t #assigning month numbers to the Month column
我正在创建具有随机数的Monthly_values数据框,因为我没有实际值。
monthly_values = meter[['Meter Number', 'Month']] # taking required 2 columns
monthly_values['Expected Energy'] = np.random.randint(2, 25, len(monthly_values)) # generating random energy values
final_OP = pd.merge(meter, monthly_values)[['Meter Number', 'Site Number', 'Month', 'Expected Energy']] # merging the required columns
您可以使用实际值编辑Expected Energy
数据框中的monthly_values
列,然后与meter
数据帧合并。