我有一个特定的数据框,如下所示:
如果列 col_name 中不存在值“C”和“D”,则将“C”和“D”添加到其 col_name 中。最终的数据框应如下所示:
编辑: 另请注意,此数据框中可能有更多列。我没有添加其他列,因为我认为这与代码无关,但后来我发现有些困惑
最佳答案
您可以使用 groupby 检查“C”和“D”是否在“col_name”列中,如果没有则添加它们。
df = pd.DataFrame([{'owner':'svc','name':'dmn_dmn','col_name':'A','test_col1':1,'test_col2':'String1'},{'owner':'svc','name':'dmn_dmn','col_name':'B','test_col1':2,'test_col2':'String12'},{'owner':'svc','name':'dmn_dmn','col_name':'C','test_col1':'remain_constant_3','test_col2':'String13'},{'owner':'svc','name':'dmn_dmn','col_name':'D','test_col1':'remain_constant_3','test_col2':'String14'},{'owner':'svc','name':'time1','col_name':'E','test_col1':5,'test_col2':'String1123'}])
for g,g_hold in df.groupby('name'):
if 'C' not in g_hold['col_name'].tolist():
df = df.append({'owner':'svc','name':g,'col_name':'C','test_col1':'remain_constant_3','test_col2':'String13'},ignore_index=True)
if 'D' not in g_hold['col_name'].tolist():
df = df.append({'owner':'svc','name':g,'col_name':'D','test_col1':'remain_constant_3','test_col2':'String14'},ignore_index=True)
print(df.sort_values(['name','col_name']))
代码最终看起来像这样。
关于python - Pandas-根据特定条件添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69467949/