如果某些条件匹配,Pandas会从另一个数据框创建列

时间:2018-01-08 18:27:44

标签: python pandas

嘿所有我试图根据某些条件是否满足在数据框中创建新列。最终目标是,只要建筑物,楼层和位置匹配,所有条件在列中都未被占用的行。时间比占用时间长。

Sample CSV File

我事先试过看过这个,但我不相信它符合我的想法。 Other Stack Overflow Post

愿意为此指明正确的方向。

我正在使用的当前代码:(也尝试使用循环,但我不再需要在下面发布代码)

[from IPython.display import display
df = pd.read_csv("/Users/username/Desktop/test.csv")

df2 = pd.DataFrame()

df2['Location'] = df.Location
df2['Type'] = df.Type
df2['Floor'] = df.Floor
df2['Building'] = df.Building
df2['Time'] = df['Date/Time']
df2['Status'] = df['Status']

df2 = df[~df['Condition'].isin(['Unoccupied'])]
df2['Went Unoccupied'] = np.where((df2['Location']==df['Location'])&(df2['Time'] < df['Date/Time']))

1 个答案:

答案 0 :(得分:0)

OP尝试为Condition == occupied的每一行添加未占用的时间。似乎数据排序良好,在被占用和未被占用之间交替。因此,我们向后移动数据集并创建一个新列time_of_next_row。然后,查询df1.Condition == "Occupied"

的条件
df["time_of_next_row"] = df.shift(-1)["Date/Time"]
df_occ = df1[df1.Condition == "Occupied"]