python中已知df1和df2具有相同的列,如何根据df2的列名筛选出df1中相同的列名并且将相同的列名单独存为一个dataframe
时间: 2023-04-06 17:03:10 浏览: 120
您好,这是一个关于Python的数据处理问题。您可以使用以下代码来实现:
```python
common_cols = df1.columns.intersection(df2.columns)
common_df = df1[common_cols]
```
其中,`common_cols`是df1和df2中相同的列名,`common_df`是df1中相同的列名单独存为一个dataframe。
希望能对您有所帮助。
相关问题
python中如何筛选df1的行名和df2的行名相同的部分
你可以使用pandas库中的merge函数来实现这个功能。具体步骤如下:
1. 使用merge函数将df1和df2按照行名进行合并,使用参数how='inner'表示只保留两个DataFrame中行名相同的部分。
2. 使用drop函数删除不需要的列,保留需要的行名列即可。
下面是示例代码:
```
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]}, index=['a', 'c', 'd'])
# 使用merge函数合并两个DataFrame
merged_df = pd.merge(df1, df2, left_index=True, right_index=True, how='inner')
# 删除不需要的列,保留行名列
result = merged_df.drop(['A', 'B', 'C', 'D'], axis=1)
# 输出结果
print(result)
```
输出结果为:
```
index
a 1
c 3
```
df1共有5987列387行,df2有300列1行,如何根据df2列中的数据筛选和df1列名相同的,并保存在一个新的df中
你可以使用 pandas 库中的 merge 函数,将 df1 和 df2 按照列名相同的列进行合并,然后根据 df2 中的数据筛选出需要的行,最后保存在一个新的 df 中。具体代码如下:
```python
import pandas as pd
# 读取 df1 和 df2
df1 = pd.read_csv('df1.csv')
df2 = pd.read_csv('df2.csv')
# 将 df1 和 df2 按照列名相同的列进行合并
merged_df = pd.merge(df1, df2, on=list(df2.columns))
# 根据 df2 中的数据筛选出需要的行
filtered_df = merged_df[merged_df[df2.columns[0]] == df2.iloc[0, 0]]
# 保存在一个新的 df 中
filtered_df.to_csv('filtered_df.csv', index=False)
```
其中,'df1.csv' 和 'df2.csv' 分别是 df1 和 df2 的数据文件,'filtered_df.csv' 是保存筛选后的结果的文件。