首页 > 解决方案 > 如何使用 pandas 读取多个文件并导出一张表中的行数?

问题描述

有谁知道如何启动循环以读取下面的所有文件并计算每个表中的行并将数字导出到一个表中?我使用 jupyter notebook 运行 python (3.8) 并使用 pandas 来操作数据。我想计算在特定时期每天有多少条推文。我使用 twint 来检索信息并想分析数据。

df01 = pd.read_csv("00_bitcoin_raw_2020-03.csv")
df02 = pd.read_csv("00_bitcoin_raw_2020-04.csv")
df03 = pd.read_csv("00_bitcoin_raw_2020-05.csv")
df04 = pd.read_csv("00_bitcoin_raw_2020-06.csv")
df05 = pd.read_csv("00_bitcoin_raw_2020-07.csv")
df06 = pd.read_csv("00_bitcoin_raw_2020-08.csv")
df07 = pd.read_csv("00_bitcoin_raw_2020-09.csv")
df08 = pd.read_csv("00_bitcoin_raw_2020-10.csv")
df09 = pd.read_csv("00_bitcoin_raw_2020-11.csv")
df10 = pd.read_csv("00_bitcoin_raw_2020-12.csv")

total_data_2020 = [len(df01),len(df02),len(df03),len(df04),len(df05),len(df06),len(df07),len(df08),len(df09),len(df10)]

df_2020 = pd.DataFrame(total_data_2020)

df_2020

标签: pythonpandascsv

解决方案


使用 Python 3.6+,您可以使用 f-stringformatting语法来填充 ( {i:02}) 生成的数字range。或者,用于header=None指示您的数据没有标题,或者,如果有,则header相应地设置值以获得有效数据行的确切数量。

import pandas as pd
import numpy as np

total_data_2020 = []
for i in range(3, 13):
    csv_name = f'00_bitcoin_raw_2020-{i:02}.csv'
    df = pd.read_csv(csv_name) # header=None
    total_data_2020.append((csv_name, len(df)))

df_2020 = pd.DataFrame(total_data_2020, columns=['csv_name', 'df_len'])
print(df_2020)
                     csv_name  df_len
0  00_bitcoin_raw_2020-03.csv      13
1  00_bitcoin_raw_2020-04.csv      11
2  00_bitcoin_raw_2020-05.csv      11
3  00_bitcoin_raw_2020-06.csv      42
4  00_bitcoin_raw_2020-07.csv      23
5  00_bitcoin_raw_2020-08.csv      20
6  00_bitcoin_raw_2020-09.csv      11
7  00_bitcoin_raw_2020-10.csv      29
8  00_bitcoin_raw_2020-11.csv      28
9  00_bitcoin_raw_2020-12.csv      35

推荐阅读