我是Python新手,我即将解决一些简单的问题。
我有两个excel数据集。第一栏载有我在不同日子所取的样本,分别列有“日期”栏及“月份”栏,详情如下:

还有另一个excel,我只想要的约会

我想用与第二个excel相同的日期过滤第一个excel,并打印出符合这些条件的行。
这是我的代码:第一次尝试:
import datetime
import pandas
import pandas as pd
import openpyxl
from pandas import DataFrame
from datetime import datetime
import datetime as dt
import numpy as np
df_1=pd.read_excel('waterstationin29UMT.xlsx',sheet_name='Sheet1') #first excel
print(df_1)
df_2=pd.read_excel('29UMTdate.xlsx',sheet_name='Sheet1') #second excel
print(df_2)
minyan_d = df_2.iloc[1:11:,1:4] #only want the date information
print(type(minyan_d))
# obtain datetime series:
df_2_1=pd.to_datetime(minyan_d['system:time_start'],format='%Y/%m/%d')
print(type(df_2_1.dt.year))
water_date = df_1['SampDay']
water_month = df_1['SampMonth']
df_1.where((df_1['SampDay'] == df_2_1.dt.day) and (df_1['SampMonth'] == df_2_1.dt.month))and get the bug said that 'Can only compare identically-labeled series objects'
```javascript第二次尝试:
for y in water_month:
if [x == (df_2_1.dt.day)] and [y ==(df_2_1.dt.month)]:
print(1)
else:
print(2)我知道第一个excel中的一些数据在第二个excel中找不到,但是我不知道为什么我只得到一个。我是Python新手。请原谅我提出的幼稚的问题。
发布于 2022-08-08 14:41:33
使用merge()。
示例:
merged = pd.merge(df_1, df_2, how='inner', on=['SampMonth'])这将加入跨dataframes的SampMonth列中具有相同条目的行。您还可以使用how="outer",这会导致不同的合并。
阅读相关文档,了解如何将其用于您的需求--这是非常有用的。
或者,如果你只想过滤一个数据,你可以这样做:
df_1 = df_1[df_1["SampMonth" == <insert month here>]]这将返回数据中的行,其中月份与您想要的匹配--您可以将内部布尔值设置为复合布尔值,就像在(condition 1) & (condition 2) & (condition 3)中那样,以使整个日期匹配。
发布于 2022-08-08 18:19:51
伙计们。我想我找到了解决方案,但仍然非常复杂,我已经将第一个excel的数据转换为日/月/年格式,并通过以下代码进行了比较:) minmin =df_1‘value’..isin(df_2.iloc0:11,5:8),这给了我假/真。任何有效和节省时间的代码也是必要的!
https://stackoverflow.com/questions/73279648
复制相似问题