![](/img/trans.png)
[英]Add column to a Python pandas DataFrame based on values in an other column
[英]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 沒有任何唯一值。
假設您的兩個數據框的第一列是date
和datetime
。 df1
中的 Boolean 列是boolean1
和boolean2
。
首先將您的第一列轉換為日期時間類型
df1['date'] = pd.to_datetime(df1['date'])
df2['datetime'] = pd.to_datetime(df2['datetime'])
然后根據df1
的date
列創建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.