我有一个数据集,如果特定列中缺少此值,我想在其中追加行。
数据
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
追加新行。其中之一是使用lists
和loc
方法:
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 的快速示例