python以dataframe格式读取文件夹内所有CSV文件,并将所有dataframe合并,同时只保留相同列名的数据
时间: 2024-05-05 15:18:42 浏览: 7
你好!对于你的问题,可以使用 pandas 库来读取所有 CSV 文件并合并为一个 dataframe,代码如下:
```python
import pandas as pd
import glob
path = 'path/to/folder/*.csv'
all_files = glob.glob(path)
# 读取所有CSV文件并合并
df = pd.concat((pd.read_csv(f) for f in all_files))
# 只保留相同列名的数据
df = df.reindex(columns=df.columns.intersection(df.iloc[:,0].dropna().unique()))
print(df)
```
这段代码首先使用 glob 库获取文件夹中所有的 CSV 文件路径,然后使用 pandas 库中的 concat 函数将所有 CSV 文件的数据合并。最后使用 reindex 函数只保留相同列名的数据。
希望对你有帮助!
相关问题
python,dataframe批量读取某一文件夹下的所有csv文件
可以使用 pandas 库中的 glob 函数来实现批量读取某一文件夹下的所有 csv 文件。具体代码如下:
```python
import pandas as pd
import glob
path = r'path/to/folder' # 文件夹路径
all_files = glob.glob(path + "/*.csv") # 获取文件夹下所有 csv 文件的路径
dfs = [] # 存储所有读取的 csv 文件的 DataFrame
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
dfs.append(df)
# 将所有 DataFrame 合并为一个大的 DataFrame
df = pd.concat(dfs, axis=0, ignore_index=True)
```
其中,`path` 变量需要替换为实际的文件夹路径。`glob.glob` 函数会返回一个列表,其中包含了所有符合指定模式的文件路径。在上面的代码中,我们使用了 `pd.read_csv` 函数来读取每个 csv 文件,并将它们存储在一个列表中。最后,我们使用 `pd.concat` 函数将所有 DataFrame 合并为一个大的 DataFrame。
python读取一个文件夹中的所有csv文件为dataframe 并使用concat将这些dataframe拼接在一起
可以使用Python中的pandas库来实现读取一个文件夹中的所有csv文件为dataframe并使用concat将这些dataframe拼接在一起的操作。
首先,需要导入pandas库和os库:
``` python
import pandas as pd
import os
```
然后,可以使用os库的listdir函数来获取指定文件夹中的所有文件名,并使用pandas的read_csv函数来读取每个csv文件为dataframe,保存到一个列表中:
``` python
folder_path = 'path/to/folder'
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
dataframes = []
for file in csv_files:
file_path = os.path.join(folder_path, file)
df = pd.read_csv(file_path)
dataframes.append(df)
```
最后,可以使用pandas的concat函数将所有dataframe拼接在一起:
``` python
merged_df = pd.concat(dataframes, ignore_index=True)
```
其中,ignore_index参数可以用于重置所有行的索引号。
完整代码如下:
``` python
import pandas as pd
import os
folder_path = 'path/to/folder'
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
dataframes = []
for file in csv_files:
file_path = os.path.join(folder_path, file)
df = pd.read_csv(file_path)
dataframes.append(df)
merged_df = pd.concat(dataframes, ignore_index=True)
```