Excel文件被覆盖而不是concat-Python-Pandas

时间:2019-03-13 14:13:01

标签: python excel pandas

我正在尝试使用以下脚本将其中的所有excel文件和工作表联系在一起。可以,但是每个文件都会覆盖excel文件c.xlsx,因此只能隐藏最后一个excel文件,不确定为什么?

import pandas as pd
import os
import ntpath
import glob

dir_path = os.path.dirname(os.path.realpath(__file__))
os.chdir(dir_path)
cdf = None
for excel_names in glob.glob('*.xlsx'):
    print(excel_names)
    df = pd.read_excel(excel_names, sheet_name=None, ignore_index=True)
    cdf = pd.concat(df.values())
    cdf.to_excel("c.xlsx", header=False, index=False)

3 个答案:

答案 0 :(得分:2)

想法是在列表理解中创建import pyaudio import wave CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() SPEAKERS = p.get_default_output_device_info()["hostApi"] #The modified part stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK, input_host_api_specific_stream_info=SPEAKERS, as_loopback = True) #The part I have modified print("* recording") frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS) + 1): data = stream.read(CHUNK) frames.append(data) print("* done recording") stream.stop_stream() stream.close() p.terminate() wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() 的列表,但因为必须先使用DataFrame循环使用orderdict,然后再concat使用一个最终的最终DataFrame:

concat

答案 1 :(得分:0)

我刚刚测试了以下代码。它将文件夹中所有Excel文件中的数据合并到一个Excel文件中。

import pandas as pd
import numpy as np

import glob
glob.glob("C:\\your_path\\*.xlsx")

all_data = pd.DataFrame()
for f in glob.glob("C:\\your_path\\*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df,ignore_index=True)
print(all_data)
df = pd.DataFrame(all_data)
df.shape
df.to_excel("C:\\your_path\\final.xlsx", sheet_name='Sheet1')

答案 2 :(得分:0)

我使用下面的脚本来工作,该脚本使用@ ryguy72的答案,但可以在所有工作表以及标题行上使用。

import pandas as pd
import numpy as np
import glob

all_data = pd.DataFrame()
for f in glob.glob("my_path/*.xlsx"):
    df = pd.read_excel(f, sheet_name=None, ignore_index=True)
    cdf = pd.concat(df.values())
    all_data = all_data.append(cdf,ignore_index=True)
print(all_data)
df = pd.DataFrame(all_data)
df.shape
df.to_excel("my_path/final.xlsx", sheet_name='Sheet1')