df1共有5987列387行,df2有300列1行,如何根据df2列中的数据筛选和df1列名相同的,并保存在一个新的df中
时间: 2023-04-06 12:03:09 浏览: 56
你可以使用 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' 是保存筛选后的结果的文件。
相关问题
python中已知df1和df2具有相同的列,如何根据df2的列名筛选出df1中相同的列名并且将相同的列名单独存为一个dataframe
您好,这是一个关于Python的数据处理问题。您可以使用以下代码来实现:
```python
common_cols = df1.columns.intersection(df2.columns)
common_df = df1[common_cols]
```
其中,`common_cols`是df1和df2中相同的列名,`common_df`是df1中相同的列名单独存为一个dataframe。
希望能对您有所帮助。
pandas 有两个df数据,根据df1的列数据,把df2的其中一列匹配给df1
你可以使用 pandas 的 merge 函数来将两个 data frame 按照特定的列进行合并。假设你需要将 df1 和 df2 按照 "col1" 列进行合并,将 df2 的 "col2" 列赋值给 df1 中的 "col3" 列,可以按照如下方式进行操作:
```python
import pandas as pd
# 创建示例数据 df1 和 df2
df1 = pd.DataFrame({'col1': ['A', 'B', 'C'], 'col3': [0, 0, 0]})
df2 = pd.DataFrame({'col1': ['A', 'B', 'D'], 'col2': [1, 2, 3]})
# 按照 'col1' 列进行合并,将 df2 的 'col2' 列赋值给 df1 的 'col3' 列
df1 = pd.merge(df1, df2[['col1', 'col2']], on='col1', how='left')
df1['col3'] = df1['col3'].fillna(df1['col2'])
df1 = df1.drop('col2', axis=1)
print(df1)
```
这里使用了 merge 函数将 df1 和 df2 按照 "col1" 列进行合并,使用了 left 连接方式。然后,将 df2 的 "col2" 列赋值给 df1 的 "col3" 列,并且将 df1 中的缺失值填充为 df1 中的 "col2" 列。最后,将 df2 的 "col2" 列删除,得到最终的结果 df1。