簡體   English   中英

Python Pandas:根據匹配值在 dataframe 中添加列

[英]Python Pandas: add column in a dataframe based on a matching values

我有兩個數據框。 一個有每日數據,另一個有每小時數據。 兩個數據框都涵蓋了確切的時間段(大約 2 年)

Dataframe 1 看起來像這樣:

0   2017-01-01  963.658020  998.325012  0.035974    False   False
1   2017-01-02  998.617004  1021.750000     0.023165    False   False
2   2017-01-03  1021.599976     1043.839966     0.021770    False   False
3   2017-01-04  1044.400024     1154.729980     0.105640    True    False
4   2017-01-05  1156.729980     1013.380005     -0.123927   False   True

Dataframe 2 看起來像這樣:

0   2017-01-01  00:00:00    974.55  972.00  -0.002617
1   2017-01-01  01:00:00    972.00  970.55  -0.001492
2   2017-01-01  02:00:00    970.55  969.89  -0.000680
3   2017-01-01  03:00:00    969.89  967.80  -0.002155
4   2017-01-01  04:00:00    967.80  967.80  0.000000

我想將最后兩個 Boolean 列添加到我的每小時 dataframe 中。 如果 dataframe 1 中的某一天的 boolean 值為 false,我希望將該值添加到 dataframe 2 中對應於該日期的所有行中。 我不知道合並是否可以在這里工作,因為 dataframe 2 沒有任何唯一值。

假設您的兩個數據框的第一列是datedatetime df1中的 Boolean 列是boolean1boolean2

首先將您的第一列轉換為日期時間類型

df1['date'] = pd.to_datetime(df1['date'])
df2['datetime'] = pd.to_datetime(df2['datetime'])

然后根據df1date列創建df2 boolean列

df2['boolean1'] = df2['datetime'].dt.date.map(df1.set_index('date')['boolean1'])
df2['boolean2'] = df2['datetime'].dt.date.map(df1.set_index('date')['boolean2'])

最后,過濾掉df2中兩個 boolean 列都為 True 的行

m = df2[['boolean1', 'boolean2']].all(axis=1)
df2 = df2[~m]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM