首页 > 解决方案 > 根据条件插入索引的新行

问题描述

我有一个带有命名索引和两列的 pandas df,如图所示。

在此处输入图像描述

df = pd.DataFrame(columns=['system_call','frequency','file_frequency'])
df.set_index('system_call', inplace=True)

如果满足 if-else 条件,我想添加一个新行。我试过df.loc[-1]=[words[0],words[1],1]了,但我认为它可能适用于未命名的索引。

预期产出——

system_call   frequency file_frequency

madvise          300    3
write            277    2
read             23     5
ioctl            45     4
getuid           78     2
epoll_pwait      12     1
futex            13     6

可以看出,现在添加了最后一行

标签: pythonpandasdataframe

解决方案


我相信需要,如果futex不存在于index

df.loc['futex']=[13,6]

print (df)
             frequency  file_frequency
system_call                           
madvise            300               3
write              277               2
read                23               5
ioctl               45               4
getuid              78               2
epoll_pwait         12               1
futex               13               6

如果存在,则重写行:

df.loc['madvise']=[130,100]
print (df)
             frequency  file_frequency
system_call                           
madvise            130             100
write              277               2
read                23               5
ioctl               45               4
getuid              78               2
epoll_pwait         12               1

如果需要总是添加新的行使用append索引Series作为列名和name新的索引值:

df = df.append(pd.Series([13,6], name='futex', index=df.columns))
print (df)
             frequency  file_frequency
system_call                           
madvise            300               3
write              277               2
read                23               5
ioctl               45               4
getuid              78               2
epoll_pwait         12               1
futex               13               6

df = df.append(pd.Series([130,100], name='madvise', index=df.columns))
print (df)
             frequency  file_frequency
system_call                           
madvise            300               3
write              277               2
read                23               5
ioctl               45               4
getuid              78               2
epoll_pwait         12               1
madvise            130             100

推荐阅读