【发布时间】:2020-05-06 12:59:58
【问题描述】:
我有两个如下所示的数据框
import pandas as pd
df1 = pd.DataFrame(
{
"Server": ["Server1", "Server1","Server1","Server1","Server1"],
"FileName": [
"2020-05-01T18:18:00Z/Server1/file1",
"2020-05-01T18:18:13Z/Server1/file2",
"2020-05-01T18:20:47Z/Server1/file3",
"2020-05-01T18:21:46Z/Server1/file4",
"2020-05-01T18:24:43Z/Server1/file5",
],
}
)
df2 = pd.DataFrame(
{
"Server": ["Server1", "Server1","Server1","Server1","Server1"],
"FileName": [
"2020-05-01T18:18:00Z/Server1/file1",
"2020-05-01T18:18:13Z/Server1/file2",
"2020-05-01T18:20:47Z/Server1/file3",
"2020-05-01T18:33:08Z/Server1/file6",
"2020-05-01T18:33:11Z/Server1/file7",
],
}
)
df1:
FileName Server
0 2020-05-01T18:18:00Z/Server1/file1 Server1
1 2020-05-01T18:18:13Z/Server1/file2 Server1
2 2020-05-01T18:20:47Z/Server1/file3 Server1
3 2020-05-01T18:21:46Z/Server1/file4 Server1
4 2020-05-01T18:24:43Z/Server1/file5 Server1
df2:
FileName Server
0 2020-05-01T18:18:00Z/Server1/file1 Server1
1 2020-05-01T18:18:13Z/Server1/file2 Server1
2 2020-05-01T18:20:47Z/Server1/file3 Server1
3 2020-05-01T18:33:08Z/Server1/file6 Server1
4 2020-05-01T18:33:11Z/Server1/file7 Server1
我想要 df1 中不在 df2 中的文件。 Column Server 在这里是微不足道的。我想要下面的数据框
FileName Server
0 2020-05-01T18:21:46Z/Server1/file4 Server1
1 2020-05-01T18:24:43Z/Server1/file5 Server1
我通过遍历每个值来实现这一点。有什么小而快的方法可以做到这一点。
df = pd.DataFrame()
for index1, row1 in df1.iterrows():
flag = 0
for index2, row2 in df2.iterrows():
if row1['FileName'] == row2['FileName']:
flag = 1
if flag == 0:
df = df.append({'Server': row1['Server'], 'FileName': row1['FileName']}, ignore_index=True)
print df
【问题讨论】: