pandas比较相同字段,不同周期内的数据变化
时间: 2024-12-20 21:29:16 浏览: 4
在Pandas中,如果你想比较两个或多个数据框(DataFrame)在同一列上但在不同时间段内的数据变化,可以使用`merge`, `concat` 或者 `pivot_table`等函数结合条件操作来实现。例如:
1. **Merge**:你可以将不同时间周期的数据集按照某个共同标识(如日期)合并,然后计算每个时段特定字段的变化,比如`groupby`后求差分。
```python
df1 = pd.read_csv('data1.csv', parse_dates=['date_column'])
df2 = pd.read_csv('data2.csv', parse_dates=['date_column'])
merged_df = pd.merge(df1, df2, on='date_column')
diff_series = merged_df.groupby('date_column')['common_field'].transform(lambda x: x.diff())
```
2. **Concat**:如果只是简单地想看每个时间点的前后差异,可以先按日期排序,再使用`shift`函数。
```python
df_concat = pd.concat([df1, df2], ignore_index=True)
diff_data = df_concat.sort_values(by='date_column').groupby('date_column')['common_field'].apply(lambda x: x.shift(-1) - x)
```
3. **Pivot Table**:使用`pivot_table`可以根据日期创建透视表,然后计算每个时间点的差异。
```python
pivot_diff = (pd.pivot_table(df1+df2, values='common_field', index='date_column', columns='source', aggfunc='first') -
pd.pivot_table(df1+df2, values='common_field', index='date_column', columns='source', aggfunc='last')).reset_index()
```
在上述代码中,`common_field`是你要比较的字段,`date_column`是时间列,`source`(如果有)是区分不同数据源的字段。完成后,`diff_series`, `diff_data`或`pivot_diff`变量会展示出数据的变化情况。
阅读全文