simbench 1.4.0__zip → 1.5.1__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. simbench-1.5.1/.github/workflows/github_test_action.yml +130 -0
  2. simbench-1.5.1/.github/workflows/test_release.yml +58 -0
  3. simbench-1.5.1/.github/workflows/upload_release.yml +51 -0
  4. {simbench-1.4.0 → simbench-1.5.1}/CHANGELOG.rst +11 -1
  5. {simbench-1.4.0 → simbench-1.5.1}/PKG-INFO +54 -9
  6. {simbench-1.4.0 → simbench-1.5.1}/README.rst +0 -2
  7. simbench-1.5.1/pyproject.toml +75 -0
  8. {simbench-1.4.0 → simbench-1.5.1}/setup.cfg +0 -3
  9. simbench-1.5.1/setup.py +3 -0
  10. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/auxiliary.py +27 -10
  11. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/csv_data_manipulation.py +7 -7
  12. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/csv_pp_converter.py +49 -37
  13. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/format_information.py +1 -1
  14. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/pp_net_manipulation.py +64 -52
  15. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/read_and_write.py +4 -4
  16. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/voltLvl.py +1 -1
  17. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/extract_simbench_grids_from_csv.py +30 -23
  18. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/profiles.py +23 -29
  19. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/simbench_code.py +12 -11
  20. {simbench-1.4.0 → simbench-1.5.1/simbench}/simbench.egg-info/PKG-INFO +54 -9
  21. {simbench-1.4.0 → simbench-1.5.1/simbench}/simbench.egg-info/SOURCES.txt +8 -8
  22. simbench-1.5.1/simbench/simbench.egg-info/requires.txt +43 -0
  23. simbench-1.5.1/simbench/simbench.egg-info/top_level.txt +3 -0
  24. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_auxiliary.py +12 -10
  25. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_csv_pp_converter.py +9 -5
  26. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_pp_net_manipulation.py +5 -1
  27. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_voltLvl.py +3 -3
  28. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/networks/test_extract_grids_from_csv.py +3 -3
  29. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/networks/test_profiles.py +4 -4
  30. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/networks/test_simbench_code.py +2 -2
  31. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/networks/test_simbench_loadcases.py +1 -1
  32. simbench-1.4.0/.github/workflows/github_test_action.yml +0 -53
  33. simbench-1.4.0/.github/workflows/release.yml +0 -112
  34. simbench-1.4.0/setup.py +0 -55
  35. simbench-1.4.0/simbench/__init__.py +0 -12
  36. simbench-1.4.0/simbench.egg-info/requires.txt +0 -18
  37. simbench-1.4.0/simbench.egg-info/top_level.txt +0 -1
  38. {simbench-1.4.0 → simbench-1.5.1}/AUTHORS +0 -0
  39. {simbench-1.4.0 → simbench-1.5.1}/LICENSE +0 -0
  40. {simbench-1.4.0 → simbench-1.5.1}/MANIFEST.in +0 -0
  41. {simbench-1.4.0 → simbench-1.5.1}/requirements.txt +0 -0
  42. {simbench-1.4.0 → simbench-1.5.1}/simbench/converter/__init__.py +0 -0
  43. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Coordinates.csv +0 -0
  44. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/ExternalNet.csv +0 -0
  45. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Line.csv +0 -0
  46. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/LineType.csv +0 -0
  47. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Load.csv +0 -0
  48. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/LoadProfile.csv +0 -0
  49. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Measurement.csv +0 -0
  50. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Node.csv +0 -0
  51. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/PowerPlant.csv +0 -0
  52. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/PowerPlantProfile.csv +0 -0
  53. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/RES.csv +0 -0
  54. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/RESProfile.csv +0 -0
  55. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/StudyCases.csv +0 -0
  56. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Substation.csv +0 -0
  57. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Switch.csv +0 -0
  58. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/Transformer.csv +0 -0
  59. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-0-sw/TransformerType.csv +0 -0
  60. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Coordinates.csv +0 -0
  61. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/DCLineType.csv +0 -0
  62. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/ExternalNet.csv +0 -0
  63. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Line.csv +0 -0
  64. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/LineType.csv +0 -0
  65. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Load.csv +0 -0
  66. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/LoadProfile.csv +0 -0
  67. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Measurement.csv +0 -0
  68. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Node.csv +0 -0
  69. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/PowerPlant.csv +0 -0
  70. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/PowerPlantProfile.csv +0 -0
  71. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/RES.csv +0 -0
  72. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/RESProfile.csv +0 -0
  73. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Storage.csv +0 -0
  74. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/StorageProfile.csv +0 -0
  75. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/StudyCases.csv +0 -0
  76. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Substation.csv +0 -0
  77. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Switch.csv +0 -0
  78. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/Transformer.csv +0 -0
  79. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-1-sw/TransformerType.csv +0 -0
  80. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Coordinates.csv +0 -0
  81. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/DCLineType.csv +0 -0
  82. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/ExternalNet.csv +0 -0
  83. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Line.csv +0 -0
  84. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/LineType.csv +0 -0
  85. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Load.csv +0 -0
  86. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/LoadProfile.csv +0 -0
  87. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Measurement.csv +0 -0
  88. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Node.csv +0 -0
  89. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/PowerPlant.csv +0 -0
  90. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/PowerPlantProfile.csv +0 -0
  91. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/RES.csv +0 -0
  92. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/RESProfile.csv +0 -0
  93. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Storage.csv +0 -0
  94. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/StorageProfile.csv +0 -0
  95. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/StudyCases.csv +0 -0
  96. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Substation.csv +0 -0
  97. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Switch.csv +0 -0
  98. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/Transformer.csv +0 -0
  99. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/1-complete_data-mixed-all-2-sw/TransformerType.csv +0 -0
  100. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/__init__.py +0 -0
  101. {simbench-1.4.0 → simbench-1.5.1}/simbench/networks/loadcases.py +0 -0
  102. {simbench-1.4.0 → simbench-1.5.1/simbench}/simbench.egg-info/dependency_links.txt +0 -0
  103. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/__init__.py +0 -0
  104. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/__init__.py +0 -0
  105. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Coordinates.csv +0 -0
  106. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/DCLineType.csv +0 -0
  107. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/ExternalNet.csv +0 -0
  108. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Line.csv +0 -0
  109. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/LineType.csv +0 -0
  110. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Load.csv +0 -0
  111. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/LoadProfile.csv +0 -0
  112. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Measurement.csv +0 -0
  113. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Node.csv +0 -0
  114. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/PowerPlant.csv +0 -0
  115. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/PowerPlantProfile.csv +0 -0
  116. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/RES.csv +0 -0
  117. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/RESProfile.csv +0 -0
  118. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Shunt.csv +0 -0
  119. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Storage.csv +0 -0
  120. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/StorageProfile.csv +0 -0
  121. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/StudyCases.csv +0 -0
  122. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Substation.csv +0 -0
  123. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Switch.csv +0 -0
  124. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/Transformer.csv +0 -0
  125. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network/TransformerType.csv +0 -0
  126. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Coordinates.csv +0 -0
  127. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/DCLineType.csv +0 -0
  128. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/ExternalNet.csv +0 -0
  129. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Line.csv +0 -0
  130. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/LineType.csv +0 -0
  131. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Load.csv +0 -0
  132. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/LoadProfile.csv +0 -0
  133. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Measurement.csv +0 -0
  134. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Node.csv +0 -0
  135. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/PowerPlant.csv +0 -0
  136. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/PowerPlantProfile.csv +0 -0
  137. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/RES.csv +0 -0
  138. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/RESProfile.csv +0 -0
  139. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Shunt.csv +0 -0
  140. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Storage.csv +0 -0
  141. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/StorageProfile.csv +0 -0
  142. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/StudyCases.csv +0 -0
  143. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Substation.csv +0 -0
  144. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Switch.csv +0 -0
  145. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/Transformer.csv +0 -0
  146. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/converter/test_network_output_folder/TransformerType.csv +0 -0
  147. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/networks/__init__.py +0 -0
  148. {simbench-1.4.0 → simbench-1.5.1}/simbench/test/run_tests.py +0 -0
@@ -12,6 +12,7 @@ from copy import deepcopy
12
12
  from packaging import version
13
13
  import pandapower as pp
14
14
  from pandapower.plotting import create_generic_coordinates
15
+ import warnings
15
16
 
16
17
  try:
17
18
  import pandaplan.core.pplog as logging
@@ -124,7 +125,7 @@ def csv_data2pp(csv_data):
124
125
  _multi_parameter_determination(csv_data)
125
126
  _convert_elements_and_types(csv_data, net)
126
127
  create_branch_switches(net)
127
- net.bus.type.loc[net.bus.type == "multi_auxiliary"] = "auxiliary"
128
+ net.bus.loc[net.bus.type == "multi_auxiliary", "type"] = "auxiliary"
128
129
  _set_vm_setpoint_to_trafos(net, csv_data)
129
130
  _csv_types_to_pp2(net)
130
131
  ensure_bus_index_columns_as_int(net)
@@ -235,7 +236,7 @@ def pp2csv_data(net1, export_pp_std_types=False, drop_inactive_elements=True,
235
236
  if net.bus.shape[0] and not net.bus_geodata.shape[0] or (
236
237
  net.bus_geodata.shape[0] != net.bus.shape[0]):
237
238
  logger.info("Since there are no or incomplete bus_geodata, generic geodata are assumed.")
238
- net.bus_geodata.drop(net.bus_geodata.index, inplace=True)
239
+ net.bus_geodata = net.bus_geodata.iloc[0:0]
239
240
  create_generic_coordinates(net)
240
241
  merge_busbar_coordinates(net)
241
242
  move_slack_gens_to_ext_grid(net)
@@ -296,7 +297,7 @@ def pp2csv_data(net1, export_pp_std_types=False, drop_inactive_elements=True,
296
297
  def _round_qLoad_by_voltLvl(csv_data):
297
298
  for voltLvl, decimals in zip([2, 4, 6, 7], [2, 3, 4, 6]):
298
299
  this_voltLvl = csv_data["Load"].voltLvl <= voltLvl
299
- csv_data["Load"]["qLoad"].loc[this_voltLvl] = np.around(csv_data["Load"]["qLoad"].loc[
300
+ csv_data["Load"].loc[this_voltLvl, "qLoad"] = np.around(csv_data["Load"]["qLoad"].loc[
300
301
  this_voltLvl].values, decimals)
301
302
 
302
303
 
@@ -327,16 +328,16 @@ def convert_node_type(data):
327
328
  full_names = {"b": "busbar", "m": "muffe", "n": "node", "db": "double busbar"}
328
329
  for short, long in full_names.items():
329
330
  fit = data["bus"].type == short
330
- data["bus"].type.loc[fit] = long
331
+ data["bus"].loc[fit, "type"] = long
331
332
  else:
332
333
  not_auxiliary = ~data["Node"].type.str.contains("auxiliary")
333
334
  if sum(not_auxiliary):
334
335
  space_split = data["Node"].type[not_auxiliary].str.split(" ", expand=True)
335
336
  if 1 in space_split.columns:
336
- data["Node"].type.loc[not_auxiliary] = space_split[0].str[0] + \
337
+ data["Node"].loc[not_auxiliary, "type"] = space_split[0].str[0] + \
337
338
  space_split[1].str[0].fillna("")
338
339
  else:
339
- data["Node"].type.loc[not_auxiliary] = space_split[0].str[0]
340
+ data["Node"].loc[not_auxiliary, "type"] = space_split[0].str[0]
340
341
 
341
342
 
342
343
  def convert_line_type_acronym(data):
@@ -356,9 +357,10 @@ def convert_line_type_acronym(data):
356
357
  def _convert_measurement(data):
357
358
  """ Converts the measurement columns "side", "element", "measurement_type", respectively
358
359
  "element1", "element2", "variable". """
359
- rename_dict = {"side": "element1", "element": "element2", "measurement_type": "variable"}
360
360
  if _is_pp_type(data):
361
- data["measurement"].rename(columns=rename_dict, inplace=True)
361
+ rename_dict = {"side": "element1", "measurement_type": "variable"}
362
+ data["measurement"] = data["measurement"].rename(columns=rename_dict)
363
+ data["measurement"]["element2"] = ""
362
364
  for element_type in ["trafo", "line", "bus"]:
363
365
  idx = data["measurement"].index[data["measurement"]["element_type"] == element_type]
364
366
  if element_type in ["trafo", "line"]:
@@ -366,19 +368,20 @@ def _convert_measurement(data):
366
368
  for side in this_branch_measurements["element1"].unique():
367
369
  idx_side = this_branch_measurements.index[
368
370
  this_branch_measurements["element1"] == side]
369
- data["measurement"]["element1"].loc[idx_side] = data.bus.name.loc[data[
370
- element_type][side+"_bus"].loc[data["measurement"]["element2"].loc[
371
+ data["measurement"].loc[idx_side, "element1"] = data.bus.name.loc[data[
372
+ element_type][side+"_bus"].loc[data["measurement"]["element"].loc[
371
373
  idx_side]]].values
372
- data["measurement"]["element2"].loc[idx] = data[element_type].name.loc[data[
373
- "measurement"]["element2"].loc[idx]].values
374
+ data["measurement"].loc[idx, "element2"] = data[element_type].name.loc[data[
375
+ "measurement"]["element"].loc[idx]].values
374
376
  else:
375
- data["measurement"]["element1"].loc[idx] = data.bus.name.loc[data["measurement"][
376
- "element2"][idx]].values
377
- data["measurement"]["element2"].loc[idx] = np.nan
377
+ data["measurement"].loc[idx, "element1"] = data.bus.name.loc[data["measurement"][
378
+ "element"][idx]].values
379
+ del data["measurement"]["element"]
378
380
  else:
381
+ rename_dict = {"element": "element2", "measurement_type": "variable"}
379
382
  _sort_measurement_elements(data)
380
383
  rename_dict = {y: x for x, y in rename_dict.items()}
381
- data["Measurement"].rename(columns=rename_dict, inplace=True)
384
+ data["Measurement"] = data["Measurement"].rename(columns=rename_dict)
382
385
 
383
386
  # --- determine which measurement indices are which element type -> fill "element_type"
384
387
  idx_trafo = data["Measurement"].index[data["Measurement"]["element"].isin(data[
@@ -394,24 +397,24 @@ def _convert_measurement(data):
394
397
  "trafo names given in element2 which do not exist in the " +
395
398
  "csv_data[element] table.")
396
399
  data["Measurement"]["element_type"] = "bus"
397
- data["Measurement"]["element_type"].loc[idx_trafo] = "trafo"
398
- data["Measurement"]["element_type"].loc[idx_line] = "line"
400
+ data["Measurement"].loc[idx_trafo, "element_type"] = "trafo"
401
+ data["Measurement"].loc[idx_line, "element_type"] = "line"
399
402
 
400
403
  # --- fill "element" column
401
- data["Measurement"]["element"].loc[idx_trafo] = data["Transformer"].index[
404
+ data["Measurement"].loc[idx_trafo, "element"] = data["Transformer"].index[
402
405
  idx_in_2nd_array(data["Measurement"]["element"].loc[idx_trafo].values,
403
406
  data["Transformer"]["id"].values)]
404
- data["Measurement"]["element"].loc[idx_line] = data["Line"].index[idx_in_2nd_array(
407
+ data["Measurement"].loc[idx_line, "element"] = data["Line"].index[idx_in_2nd_array(
405
408
  data["Measurement"]["element"].loc[idx_line].values, data["Line"]["id"].values)]
406
- data["Measurement"]["element"].loc[idx_bus] = data["Node"].index[idx_in_2nd_array(
407
- data["Measurement"]["side"].loc[idx_bus].values, data["Node"]["id"].values)]
409
+ data["Measurement"].loc[idx_bus, "element"] = data["Node"].index[idx_in_2nd_array(
410
+ data["Measurement"]["element1"].loc[idx_bus].values, data["Node"]["id"].values)]
408
411
 
409
412
  # --- fill "side" column
410
413
  bus_indices = data["Node"].index[idx_in_2nd_array(data["Measurement"][
411
- "side"].values, data["Node"]["id"].values)]
414
+ "element1"].values, data["Node"]["id"].values)]
412
415
  bus_names = pd.Series(data["Node"]["id"].loc[bus_indices].values,
413
416
  index=data["Measurement"].index)
414
- data["Measurement"]["side"] = np.nan
417
+ data["Measurement"]["side"] = ""
415
418
  are_hv = ensure_iterability(bus_names.loc[idx_trafo].values == data[
416
419
  "Transformer"]["nodeHV"].loc[data["Measurement"]["element"].loc[idx_trafo]].values)
417
420
  data["Measurement"].loc[idx_trafo, "side"] = ["hv" if is_hv else "lv" for is_hv in are_hv]
@@ -419,6 +422,8 @@ def _convert_measurement(data):
419
422
  "Line"]["nodeA"].loc[data["Measurement"]["element"].loc[idx_line]].values)
420
423
  data["Measurement"].loc[idx_line, "side"] = ["from" if is_from else "to" for is_from in
421
424
  are_from]
425
+ data["Measurement"].loc[data["Measurement"]["side"] == "", "side"] = None
426
+ del data["Measurement"]["element1"]
422
427
 
423
428
 
424
429
  def _sort_measurement_elements(csv_data):
@@ -432,9 +437,9 @@ def _sort_measurement_elements(csv_data):
432
437
  "indices: " + str(list(idx_both_is_node)))
433
438
 
434
439
  el1_data = deepcopy(csv_data["Measurement"].element1[idx_el2_is_node])
435
- csv_data["Measurement"].element1.loc[idx_el2_is_node] = csv_data["Measurement"].element2[
440
+ csv_data["Measurement"].loc[idx_el2_is_node, "element1"] = csv_data["Measurement"].element2[
436
441
  idx_el2_is_node]
437
- csv_data["Measurement"].element2.loc[idx_el2_is_node] = el1_data
442
+ csv_data["Measurement"].loc[idx_el2_is_node, "element2"] = el1_data
438
443
 
439
444
 
440
445
  def _csv_profiles_to_pp(net, csv_data):
@@ -521,10 +526,10 @@ def _assume_cs_ohl_line_type(line_types_df):
521
526
  # if "type" not line_types_df.columns:
522
527
  # line_types_df["type"] = np.nan
523
528
  is_null = line_types_df.type.isnull().values
524
- line_types_df.type.loc[line_types_df.index[is_null & is_cs]] = "cs"
529
+ line_types_df.loc[line_types_df.index[is_null & is_cs], "type"] = "cs"
525
530
 
526
531
  # assume all other types as ohl
527
- line_types_df.type.fillna("ol", inplace=True)
532
+ line_types_df.type = line_types_df.type.fillna("ol")
528
533
 
529
534
 
530
535
  def _pp_types_to_csv1(net, export_pp_std_types):
@@ -541,7 +546,7 @@ def _pp_types_to_csv1(net, export_pp_std_types):
541
546
  else:
542
547
  # if 'std_type' does not exist but 'type', here 'type' is renamed into 'std_type'
543
548
  new_index_dict = {(i): (i if i != "type" else "std_type") for i in net[elm].columns}
544
- net[elm].rename(columns=new_index_dict, inplace=True)
549
+ net[elm].rename = net[elm].rename(columns=new_index_dict)
545
550
 
546
551
  # --- add new std_types to line, trafo, trafo3w, storage and dcline tables if missing
547
552
  type_params = {
@@ -558,7 +563,7 @@ def _pp_types_to_csv1(net, export_pp_std_types):
558
563
  uni_dupl_dict = get_unique_duplicated_dict(elms_without_type, subset=type_params[elm])
559
564
  for uni, dupl in uni_dupl_dict.items():
560
565
  new_typename = net[elm].name.loc[uni] + '_type'
561
- net[elm].std_type.loc[[uni]+dupl] = new_typename
566
+ net[elm].loc[[uni]+dupl, "std_type"] = new_typename
562
567
  if elm in ["line", "trafo", "trafo3w"]:
563
568
  pp.create_std_type(net, dict(net[elm].loc[uni, type_params[elm]].T), new_typename,
564
569
  element=elm, overwrite=False)
@@ -576,7 +581,7 @@ def _pp_types_to_csv1(net, export_pp_std_types):
576
581
  typenames2convert = set(net.std_types[elm].keys()) - unused_pp_typenames
577
582
  net.std_types[elm] = pd.DataFrame(net.std_types[elm]).T.loc[list(
578
583
  typenames2convert)].reset_index()
579
- net.std_types[elm].rename(columns={"index": "std_type"}, inplace=True)
584
+ net.std_types[elm] = net.std_types[elm].rename(columns={"index": "std_type"})
580
585
 
581
586
  convert_line_type_acronym(net)
582
587
 
@@ -738,7 +743,7 @@ def _rename_and_multiply_columns(data):
738
743
  elif y in nan_columns: # rename if the column exists with only nan values
739
744
  to_rename_dict[x] = y
740
745
  del data[corr_str][y]
741
- data[corr_str].rename(columns=to_rename_dict, inplace=True)
746
+ data[corr_str] = data[corr_str].rename(columns=to_rename_dict)
742
747
 
743
748
  # --- multiply
744
749
  to_multiply = pd.DataFrame([(y, m) for _, y, m in ordered_tuples if not pd.isnull(m) and
@@ -759,7 +764,7 @@ def _get_parameters_to_rename_and_multiply():
759
764
  _extend_pandapower_net_columns(dummy_net)
760
765
  _prepare_res_bus_table(dummy_net)
761
766
  for elm in ["dcline"]:
762
- dummy_net[elm].rename(columns={"type": "std_type"}, inplace=True)
767
+ dummy_net[elm] = dummy_net[elm].rename(columns={"type": "std_type"})
763
768
  for elm in ["gen", "sgen"]:
764
769
  dummy_net[elm]["vm_pu"] = np.nan
765
770
  dummy_net[elm]["va_degree"] = np.nan
@@ -831,7 +836,7 @@ def _merge_dcline_and_storage_type_and_element_data(input_data):
831
836
  input_data[corr_str].columns.union(Type_col_except_std_type), axis=1)
832
837
  input_data[corr_str].loc[:, Type_col_except_std_type] = input_data[corr_str_type].loc[
833
838
  idx_type, Type_col_except_std_type].values
834
- input_data[corr_str_type].drop(input_data[corr_str_type].index, inplace=True)
839
+ input_data[corr_str_type] = input_data[corr_str_type].iloc[0:0]
835
840
 
836
841
 
837
842
  def _copy_data(input_data, output_data):
@@ -843,9 +848,16 @@ def _copy_data(input_data, output_data):
843
848
 
844
849
  for corr_str, output_name in zip(corr_strings, output_names):
845
850
  if corr_str in input_data.keys() and input_data[corr_str].shape[0]:
846
- cols_to_copy = list(set(output_data[output_name].columns) &
847
- set(input_data[corr_str].columns))
848
- if version.parse(pd.__version__) >= version.parse("0.23.0"):
851
+ cols_to_copy = list(
852
+ set(output_data[output_name].columns) &
853
+ set(input_data[corr_str].columns[~input_data[corr_str].isnull().all()]))
854
+ if pd.__version__.startswith("2.2."):
855
+ with warnings.catch_warnings():
856
+ warnings.simplefilter(action='ignore', category=FutureWarning)
857
+ output_data[output_name] = pd.concat([output_data[output_name], input_data[
858
+ corr_str][cols_to_copy]], ignore_index=True, sort=False).reindex(
859
+ columns=output_data[output_name].columns)
860
+ elif version.parse(pd.__version__) >= version.parse("0.23.0"):
849
861
  output_data[output_name] = pd.concat([output_data[output_name], input_data[
850
862
  corr_str][cols_to_copy]], ignore_index=True, sort=False).reindex(
851
863
  columns=output_data[output_name].columns)
@@ -300,4 +300,4 @@ def _correct_calc_type(csv_data):
300
300
  if csv_data[tablename].shape[0]:
301
301
  for miss, corr in zip(misspelled, correct):
302
302
  is_miss = csv_data[tablename].calc_type.isin(miss)
303
- csv_data[tablename].calc_type.loc[is_miss] = corr
303
+ csv_data[tablename].loc[is_miss, "calc_type"] = corr
@@ -101,32 +101,30 @@ def convert_parallel_branches(net, multiple_entries=True, elm_to_convert=["line"
101
101
 
102
102
  while len(parallels):
103
103
 
104
- n_elm = net[element].shape[0]
105
-
106
104
  # add parallel elements
107
- net[element].parallel.loc[parallels] -= 1
105
+ net[element].loc[parallels, "parallel"] -= 1
108
106
  elm_to_append = net[element].loc[parallels]
109
107
  parallels_in_res = parallels[parallels.isin(net["res_"+element].index)]
110
108
  res_elm_to_append = net["res_"+element].loc[parallels_in_res]
111
109
  elm_to_append["parallel"] = 1
112
110
  num_par = list(net[element].parallel.loc[parallels])
113
111
  elm_to_append["name"] += [("_" + str(num)) for num in num_par]
114
- net[element] = pd.concat([net[element],
115
- pd.DataFrame(elm_to_append.values, columns=net[element].columns)],
116
- ignore_index=True)
117
- net["res_"+element] = pd.concat([net["res_"+element],
118
- pd.DataFrame(res_elm_to_append.values, columns=net["res_"+element].columns)],
119
- ignore_index=True)
112
+ max_idx = net[element].index.max()
113
+ net[element] = pd.concat([net[element], elm_to_append.set_index(pd.Index(range(
114
+ max_idx+1, max_idx+1+len(elm_to_append))))])
115
+ net["res_"+element] = pd.concat([net["res_"+element], res_elm_to_append.set_index(
116
+ pd.Index(range(max_idx+1, max_idx+1+len(res_elm_to_append))))])
120
117
 
121
118
  # add parallel switches
122
119
  for i, par in enumerate(parallels):
123
120
  sw_to_append = net.switch.loc[(net.switch.element == par) & (
124
121
  net.switch.et == element[0])] # does not work for trafo3w
125
- sw_to_append["element"] = n_elm + i
122
+ sw_to_append["element"] = max_idx + 1 + i
126
123
  sw_to_append["name"] += "_" + str(num_par[i])
127
- net["switch"] = pd.concat([net["switch"],
128
- pd.DataFrame(sw_to_append.values, columns=net["switch"].columns)],
129
- ignore_index=True)
124
+ max_sw_idx = net.switch.index.max()
125
+ net["switch"] = pd.concat([net["switch"], sw_to_append.set_index(
126
+ pd.Index(range(max_sw_idx+1, max_sw_idx+1+len(sw_to_append))))])
127
+
130
128
  # update parallels
131
129
  parallels = net[element].index[net[element].parallel > 1]
132
130
 
@@ -136,8 +134,8 @@ def convert_parallel_branches(net, multiple_entries=True, elm_to_convert=["line"
136
134
  if element == "line":
137
135
  branches = deepcopy(net[element])
138
136
  swap = branches.from_bus.values > branches.to_bus.values
139
- branches.from_bus.loc[swap] = net[element].to_bus.loc[swap]
140
- branches.to_bus.loc[swap] = net[element].from_bus.loc[swap]
137
+ branches.loc[swap, "from_bus"] = net[element].to_bus.loc[swap]
138
+ branches.loc[swap, "to_bus"] = net[element].from_bus.loc[swap]
141
139
  else:
142
140
  branches = net[element]
143
141
 
@@ -178,9 +176,9 @@ def convert_parallel_branches(net, multiple_entries=True, elm_to_convert=["line"
178
176
  # drop parallel/duplicated branches if the switches do not differ
179
177
  if not switches_differ:
180
178
  # drop duplicated elements
181
- net[element].parallel.loc[orig.name] += elm.parallel
182
- net[element].drop(idx, inplace=True)
183
- net["switch"].drop(switch_dupl, inplace=True)
179
+ net[element].loc[orig.name, "parallel"] += elm.parallel
180
+ net[element] = net[element].drop(idx)
181
+ net["switch"] = net["switch"].drop(switch_dupl)
184
182
 
185
183
 
186
184
  def merge_busbar_coordinates(net):
@@ -193,8 +191,8 @@ def merge_busbar_coordinates(net):
193
191
  continue
194
192
  connected_nodes = pp.get_connected_buses(net, bb_node, consider=("t", "s"))
195
193
  if len(connected_nodes):
196
- net.bus_geodata.x.loc[list(connected_nodes)] = net.bus_geodata.x.at[bb_node]
197
- net.bus_geodata.y.loc[list(connected_nodes)] = net.bus_geodata.y.at[bb_node]
194
+ net.bus_geodata.loc[list(connected_nodes), "x"] = net.bus_geodata.x.at[bb_node]
195
+ net.bus_geodata.loc[list(connected_nodes), "y"] = net.bus_geodata.y.at[bb_node]
198
196
  all_connected_buses |= connected_nodes
199
197
 
200
198
 
@@ -208,7 +206,7 @@ def provide_subnet_col(net):
208
206
  # copy zone to subnet
209
207
  net.bus["subnet"] = net.bus.zone
210
208
  else: # fill subnet nan values with zone
211
- net.bus.subnet.loc[net.bus.subnet.isnull()] = net.bus.zone.loc[net.bus.subnet.isnull()]
209
+ net.bus.loc[net.bus.subnet.isnull(), "subnet"] = net.bus.zone.loc[net.bus.subnet.isnull()]
212
210
 
213
211
  # --- for all elements: if subnet is not avialable but zone, take it from zone.
214
212
  for element in net.keys():
@@ -230,12 +228,12 @@ def provide_subnet_col(net):
230
228
 
231
229
  # --- at trafo switches: use subnet from trafo instead of the bus subnet data:
232
230
  trafo_sw = net.switch.index[net.switch.et == "t"]
233
- net.switch.subnet.loc[trafo_sw] = net.trafo.subnet.loc[net.switch.element.loc[trafo_sw]].values
231
+ net.switch.loc[trafo_sw, "subnet"] = net.trafo.subnet.loc[net.switch.element.loc[trafo_sw]].values
234
232
 
235
233
  # --- at measurements: use branch subnet instead of bus subnet data:
236
234
  for branch_type in ["line", "trafo"]:
237
235
  meas = net.measurement.index[net.measurement.element_type == branch_type]
238
- net.measurement.subnet.loc[meas] = net[branch_type].subnet.loc[net.measurement.element.loc[
236
+ net.measurement.loc[meas, "subnet"] = net[branch_type].subnet.loc[net.measurement.element.loc[
239
237
  meas]].values
240
238
 
241
239
 
@@ -247,7 +245,7 @@ def provide_voltLvl_col(net):
247
245
  net.bus["voltLvl"] = get_voltlvl(net.bus.vn_kv)
248
246
  else: # fill voltLvl nan values with vn_kv information
249
247
  idx_nan = net.bus.index[net.bus.voltLvl.isnull()]
250
- net.bus.voltLvl.loc[idx_nan] = get_voltlvl(net.bus.vn_kv.loc[idx_nan])
248
+ net.bus.loc[idx_nan, "voltLvl"] = get_voltlvl(net.bus.vn_kv.loc[idx_nan])
251
249
 
252
250
  # --- provide voltLvl parameters for all elements
253
251
  # add voltLvl column from node to all elements but "trafo"
@@ -286,12 +284,12 @@ def _add_dspf_calc_type_and_phys_type_columns(net):
286
284
  net[gen_table]["slack_weight"] = 1/net[gen_table].shape[0]
287
285
  else:
288
286
  net[gen_table]["slack_weight"] = 0
289
- net[gen_table].rename(columns={"slack_weight": "dspf"}, inplace=True)
287
+ net[gen_table] = net[gen_table].rename(columns={"slack_weight": "dspf"})
290
288
  if phys_type is not None:
291
289
  if "phys_type" not in net[gen_table].columns:
292
290
  net[gen_table]["phys_type"] = phys_type
293
291
  else:
294
- net[gen_table]["phys_type"].loc[net[gen_table]["phys_type"].isnull()] = phys_type
292
+ net[gen_table].loc[net[gen_table]["phys_type"].isnull(), "phys_type"] = phys_type
295
293
  net[gen_table]["calc_type"] = calc_type
296
294
 
297
295
 
@@ -324,6 +322,10 @@ def _replace_buses_connected_to_busbars(net, buses):
324
322
  def _add_vm_va_setpoints_to_buses(net):
325
323
  """ Adds "vmSetp" and "vaSetp" to pp net bus table and removes vm_pu from net.ext_grid,
326
324
  net.gen and net.sgen. """
325
+ try:
326
+ pd.set_option('future.no_silent_downcasting', True)
327
+ except:
328
+ pass
327
329
  net.bus.loc[net.ext_grid.bus, "vmSetp"] = net.ext_grid.vm_pu.values
328
330
  net.bus.loc[net.ext_grid.bus, "vaSetp"] = net.ext_grid.va_degree.values
329
331
  for elm, bus_type, param in zip(
@@ -333,13 +335,13 @@ def _add_vm_va_setpoints_to_buses(net):
333
335
  if "trafo" not in elm:
334
336
  buses = net[elm][bus_type]
335
337
  else:
336
- autotap_trafos = net[elm].autoTap.fillna(False).astype(bool)
337
- autoTapSide = net[elm].autoTapSide.fillna(False).astype(bool)
338
+ autotap_trafos = _as_bool_filled_na(net[elm].autoTap)
339
+ autoTapSide = _as_bool_filled_na(net[elm].autoTapSide)
338
340
  if not all(autotap_trafos == autoTapSide):
339
341
  logger.warning("'autotap_trafos' is not equal to 'autoTapSide'. \n" +
340
342
  "'autotap_trafos.sum()' is %i, " % autotap_trafos.sum() +
341
343
  "'autoTapSide.sum()' is %i" % autoTapSide.sum())
342
- autoTapSetp = net[elm].autoTapSetp.fillna(False).astype(bool)
344
+ autoTapSetp = _as_bool_filled_na(net[elm].autoTapSetp)
343
345
  if not all(autotap_trafos == autoTapSetp):
344
346
  logger.warning("'autotap_trafos' is not equal to 'autoTapSetp'. \n" +
345
347
  "'autotap_trafos.sum()' is %i, " % autotap_trafos.sum() +
@@ -354,7 +356,7 @@ def _add_vm_va_setpoints_to_buses(net):
354
356
  buses = _replace_buses_connected_to_busbars(net, buses)
355
357
  no_vm = pd.isnull(net.bus.loc[buses, "vmSetp"]).values
356
358
  net.bus.loc[buses.loc[no_vm], "vmSetp"] = net[elm][param].loc[
357
- buses.index[no_vm]].values
359
+ buses.index[no_vm]].values.astype(float)
358
360
  if sum(~no_vm):
359
361
  logger.debug("At buses " + str(list(buses.loc[~no_vm])) + " %s " % elm +
360
362
  "have a vm setpoint which is not considered, since another element " +
@@ -366,12 +368,20 @@ def _add_vm_va_setpoints_to_buses(net):
366
368
  del net[elm]["vm_pu"]
367
369
 
368
370
 
371
+ def _as_bool_filled_na(ser):
372
+ isn = ser.isnull()
373
+ out = ser.astype(bool)
374
+ out.loc[isn] = False
375
+ return out
376
+
377
+
369
378
  def _set_vm_setpoint_to_trafos(net, csv_data):
370
379
  """ Adds 'autoTapSetp' to trafo and trafo3w tables. """
371
380
  for elm in ["trafo", "trafo3w"]:
372
381
  if "autoTap" in net[elm] and "autoTapSide" in net[elm]:
373
- autotap_trafos = net[elm].autoTap.fillna(False).astype(bool)
374
- assert all(autotap_trafos == net[elm].autoTapSide.fillna(False).astype(bool))
382
+ autotap_trafos = _as_bool_filled_na(net[elm].autoTap)
383
+ autoTapSide = _as_bool_filled_na(net[elm].autoTapSide)
384
+ assert all(autotap_trafos == autoTapSide)
375
385
  if sum(autotap_trafos):
376
386
  bus_type = net[elm].autoTapSide.loc[autotap_trafos].str.lower() + "_bus"
377
387
  bus_type_col_idx = column_indices(net[elm], bus_type)
@@ -420,9 +430,9 @@ def replace_branch_switches(net, reserved_aux_node_names=None):
420
430
  geodata=geodata, zone=subnets)
421
431
  for col in ["min_vm_pu", "max_vm_pu", "substation", "voltLvl"]:
422
432
  if col in net.bus.columns:
423
- net.bus[col].loc[aux_buses] = net.bus[col][idx_bus].values
433
+ net.bus.loc[aux_buses, col] = net.bus[col][idx_bus].values
424
434
  if "subnet" in net.bus.columns:
425
- net.bus.subnet.loc[aux_buses] = subnets
435
+ net.bus.loc[aux_buses, "subnet"] = subnets
426
436
  assert len(idx_bus) == len(aux_buses)
427
437
 
428
438
  # --- replace branch bus by new auxiliary node
@@ -434,15 +444,17 @@ def replace_branch_switches(net, reserved_aux_node_names=None):
434
444
  # is_first_bus_type == hv_bus resp. from_bus
435
445
  pos_in_aux_buses = idx_in_2nd_array(np.array(idx_b_sw[is_first_bus_type]),
436
446
  np.array(idx_t_sw.union(idx_l_sw)))
437
- net[branch][bus_types[0]].loc[idx_elm[is_first_bus_type]] = aux_buses[pos_in_aux_buses]
447
+ net[branch].loc[idx_elm[is_first_bus_type], bus_types[0]] = \
448
+ aux_buses[pos_in_aux_buses].astype(net[branch][bus_types[0]].dtype)
438
449
  # ~is_first_bus_type == lv_bus resp. to_bus
439
450
  pos_in_aux_buses = idx_in_2nd_array(np.array(idx_b_sw[~is_first_bus_type]),
440
451
  np.array(idx_t_sw.union(idx_l_sw)))
441
- net[branch][bus_types[1]].loc[idx_elm[~is_first_bus_type]] = aux_buses[pos_in_aux_buses]
452
+ net[branch].loc[idx_elm[~is_first_bus_type], bus_types[1]] = \
453
+ aux_buses[pos_in_aux_buses].astype(net[branch][bus_types[1]].dtype)
442
454
 
443
455
  # --- replace switch element by new auxiliary nodes
444
- net.switch.element.loc[idx_t_sw.union(idx_l_sw)] = aux_buses
445
- net.switch.et.loc[idx_t_sw.union(idx_l_sw)] = "b"
456
+ net.switch.loc[idx_t_sw.union(idx_l_sw), "element"] = aux_buses.astype(net.switch["element"].dtype)
457
+ net.switch.loc[idx_t_sw.union(idx_l_sw), "et"] = "b"
446
458
 
447
459
  return reserved_aux_node_names
448
460
 
@@ -475,38 +487,38 @@ def create_branch_switches(net):
475
487
  current_branch_bus_type_buses = net[branch][bus_type].astype(int)
476
488
  aux_buses_are_cbbtb = aux_bus_df["aux_buses"].isin(current_branch_bus_type_buses)
477
489
  current_branch_bus_types_aux_buses = aux_bus_df["aux_buses"][aux_buses_are_cbbtb].values
478
- aux_bus_df["element"].loc[aux_buses_are_cbbtb] = current_branch_bus_type_buses.index[
490
+ aux_bus_df.loc[aux_buses_are_cbbtb, "element"] = current_branch_bus_type_buses.index[
479
491
  idx_in_2nd_array(current_branch_bus_types_aux_buses,
480
492
  current_branch_bus_type_buses.values)] # requirement: only one
481
493
  # switch per aux bus
482
- aux_bus_df["et"].loc[aux_buses_are_cbbtb] = branch[0]
494
+ aux_bus_df.loc[aux_buses_are_cbbtb, "et"] = branch[0]
483
495
 
484
496
  # replace auxiliary buses in line and trafo tables
485
- net[branch][bus_type].loc[aux_bus_df["element"].loc[aux_buses_are_cbbtb]] = aux_bus_df[
497
+ net[branch].loc[aux_bus_df["element"].loc[aux_buses_are_cbbtb], bus_type] = aux_bus_df[
486
498
  "connected_buses"].loc[aux_buses_are_cbbtb].values
487
499
 
488
500
  if pd.isnull(aux_bus_df).any().any():
489
501
  logger.error("Auxiliary bus replacement fails.")
490
502
 
491
503
  # replace auxiliary buses in switch table by branch elements
492
- net.switch["et"].loc[aux_bus_df["idx_switch"]] = aux_bus_df["et"].values
493
- net.switch["element"].loc[aux_bus_df["idx_switch"]] = np.array(
504
+ net.switch.loc[aux_bus_df["idx_switch"], "et"] = aux_bus_df["et"].values
505
+ net.switch.loc[aux_bus_df["idx_switch"], "element"] = np.array(
494
506
  aux_bus_df["element"].values, dtype=int)
495
507
 
496
508
  # drop all auxiliary buses
497
- net.bus.drop(aux_bus_df["aux_buses"], inplace=True)
509
+ net.bus = net.bus.drop(aux_bus_df["aux_buses"])
498
510
  idx_in_res_bus = aux_bus_df["aux_buses"][aux_bus_df["aux_buses"].isin(net.res_bus.index)]
499
- net.res_bus.drop(idx_in_res_bus, inplace=True)
511
+ net.res_bus = net.res_bus.drop(idx_in_res_bus)
500
512
  idx_in_bus_geodata = aux_bus_df["aux_buses"][aux_bus_df["aux_buses"].isin(
501
513
  net.bus_geodata.index)]
502
- net.bus_geodata.drop(idx_in_bus_geodata, inplace=True)
514
+ net.bus_geodata = net.bus_geodata.drop(idx_in_bus_geodata)
503
515
 
504
516
 
505
517
  def _add_coordID(net, highest_existing_coordinate_number):
506
518
  """ adds "id", "subnet" and "voltLvl" to net.bus_geodata, "coordID" to net.bus and
507
519
  returns an unique coordinate table. """
508
520
 
509
- net.bus_geodata.dropna(how="all", inplace=True)
521
+ net.bus_geodata = net.bus_geodata.dropna(how="all")
510
522
 
511
523
  # add "subnet" column to net.bus_geodata
512
524
  net.bus_geodata["subnet"] = net.bus["subnet"]
@@ -520,13 +532,13 @@ def _add_coordID(net, highest_existing_coordinate_number):
520
532
  net.bus_geodata["voltLvl"] = net.bus["voltLvl"]
521
533
 
522
534
  # add "id" column to net.bus_geodata
523
- net.bus_geodata["id"] = np.nan
524
- net.bus_geodata.id.loc[uniq] = ["coord_%i" % i for i in range(
535
+ net.bus_geodata["id"] = ""
536
+ net.bus_geodata.loc[uniq, "id"] = ["coord_%i" % i for i in range(
525
537
  highest_existing_coordinate_number+1, highest_existing_coordinate_number+1+len(uniq))]
526
538
 
527
539
  # correct bus_geodata of duplicated entries
528
540
  for uni, dupl in uniq_dupl_dict.items():
529
- net.bus_geodata.id.loc[dupl] = net.bus_geodata.id.loc[uni]
541
+ net.bus_geodata.loc[dupl, "id"] = net.bus_geodata.id.loc[uni]
530
542
 
531
543
  # copy new column "id" to net.bus["coordID"] - used in conversion process of pp2csv_data()
532
544
  net.bus["coordID"] = net.bus_geodata.id
@@ -548,13 +560,13 @@ def move_slack_gens_to_ext_grid(net):
548
560
  slacks = deepcopy(net.gen.loc[idx_slack])
549
561
  slacks["va_degree"] = 0
550
562
  slack_col_to_remove = [col for col in ["slack", "scaling"] if col in slacks.columns]
551
- slacks.drop(columns=slack_col_to_remove, inplace=True)
563
+ slacks = slacks.drop(columns=slack_col_to_remove)
552
564
  ext_grid_col_to_set = [("controllable", True)]
553
565
  for col_to_set in ext_grid_col_to_set:
554
566
  if col_to_set[0] not in net.ext_grid.columns and col_to_set[0] in slacks.columns:
555
567
  net.ext_grid[col_to_set[0]] = col_to_set[1]
556
568
  net["ext_grid"] = pd.concat([net["ext_grid"], slacks], ignore_index=True)
557
- net.gen.drop(idx_slack, inplace=True)
569
+ net.gen = net.gen.drop(idx_slack)
558
570
 
559
571
 
560
572
  def ensure_bus_index_columns_as_int(net):
@@ -161,13 +161,13 @@ def write2csv(path, data, mode="w", sep=";", float_format='%g', keys=None, keep=
161
161
  if len(duplicates) and "Type" not in i:
162
162
  logger.info("Writing to table '%s', these duplicated names are " % i +
163
163
  "dropped: " + str(['%s' % name for name in duplicates.id]))
164
- d.drop(duplicates.index, inplace=True)
165
- d.replace("", "NULL").fillna("NULL").to_csv(this_path, sep, index=index,
164
+ d = d.drop(duplicates.index)
165
+ d.replace("", "NULL").fillna("NULL").to_csv(this_path, sep=sep, index=index,
166
166
  float_format=float_format)
167
167
 
168
168
  else:
169
169
  d.replace("", "NULL").fillna("NULL").to_csv(
170
- this_path, sep, mode=mod, index=index, float_format=float_format,
170
+ this_path, sep=sep, mode=mod, index=index, float_format=float_format,
171
171
  header=(file_misses or mod == "w"))
172
172
 
173
173
  # --- writing Profiles
@@ -182,4 +182,4 @@ def write2csv(path, data, mode="w", sep=";", float_format='%g', keys=None, keep=
182
182
  d_prof = d_prof if nrows is None or d_prof.shape[0] <= nrows else \
183
183
  d_prof.loc[:nrows-1]
184
184
  d_prof.replace("", "NULL").fillna("NULL").to_csv(
185
- this_path, sep, mode="w", index=False, float_format=float_format)
185
+ this_path, sep=sep, mode="w", index=False, float_format=float_format)
@@ -185,7 +185,7 @@ def all_voltlvl_idx(net, elms=None, include_empty_elms_dicts=False):
185
185
  bus_types = ["hv_bus", "lv_bus"] if elm == "trafo" else [
186
186
  "hv_bus", "mv_bus", "lv_bus"]
187
187
  for idx in other:
188
- voltage_values = net.bus.vn_kv.loc[net[elm][bus_types].loc[idx]].values
188
+ voltage_values = net.bus.loc[net[elm][bus_types].loc[idx], "vn_kv"].values
189
189
  key = "-".join(get_voltlvl(voltage_values).astype(str))
190
190
  if key not in lvl_dicts[elm].keys():
191
191
  lvl_dicts[elm][key] = set()