使用Pandas扩展带有声明字典的数据集



我有一个数据集,如果特定列中缺少此值,我想在其中追加行。

数据

ID  Date    type    energy
AA  Q1 2022 a       1
AA  Q2 2022 ok      1
AA  Q3 2022 yes     1
AA  Q4 2022 yes     4
FC  Q1 2022 no      4
FC  Q2 2022 no      4
FC  Q3 2022 yes     45
FC  Q4 2022 yes     5


所需

ID  Date    type    energy
AA  Q1 2022 a       1
AA  Q2 2022 ok      1
AA  Q3 2022 yes     1
AA  Q4 2022 yes     4
FC  Q1 2022 no      4
FC  Q2 2022 no      4
FC  Q3 2022 yes     45
FC  Q4 2022 yes     5
BC  Q1 2022         0
DA  Q1 2022         0
BC  Q1 2023         0
DA  Q1 2023         0

执行

stat =   {
'BC':'Q1 2022', Q1 2023
'DA':'Q1 2022', Q1 2023  }

df0 = df.append(pd.DataFrame({'ID':[x for x in stat], 'Date':[stat[x] for x in stat]}))
df1 = df.merge(df0, how='left').fillna({'energy': 0})

但是,这不是追加,不确定如何在此脚本中附加值字典。我仍在研究中,任何建议都将不胜感激。

您可以通过各种方式向dataframe追加新行。其中之一是使用listsloc方法:

import pandas as pd
data = pd.read_csv('data.csv', sep=';')
new_data = [
['BC', 'Q1 2022', '', 0],
['DA', 'Q1 2022', '', 0],
['BC', 'Q1 2023', '', 0],
['DA', 'Q1 2023', '', 0]
]
for row in new_data:
data.loc[len(data)] = row
print(data)

这将为您提供以下输出:

ID     Date type  energy
0   AA  Q1 2022    a       1
1   AA  Q2 2022   ok       1
2   AA  Q3 2022  yes       1
3   AA  Q4 2022  yes       4
4   FC  Q1 2022   no       4
5   FC  Q2 2022   no       4
6   FC  Q3 2022  yes      45
7   FC  Q4 2022  yes       5
8   BC  Q1 2022            0
9   DA  Q1 2022            0
10  BC  Q1 2023            0
11  DA  Q1 2023            0

另一方面,如果你想具体使用dictonaries,那么你可以使用append方法:

data = pd.read_csv('data.csv', sep=';')
new_data = {
'ID': ['BC', 'DA', 'BC', 'DA'],
'Date': ['Q1 2022', 'Q1 2022', 'Q1 2023', 'Q1 2023'],
'type': ['', '', '', ''],
'energy': [0, 0, 0, 0]
}
data = data.append(pd.DataFrame(new_data), ignore_index=True)
print(data)

它将为您提供与以前相同的输出。

在这里,您可以找到有关如何将数据附加到dataframe的更多信息:将行附加到DataFrame 的快速示例

相关内容

  • 没有找到相关文章

最新更新