如何创建动态 DataFrame 以使用 Pandas 将多个数据导出到 excel?
How to create a dynamic DataFrame to export multiple data to excel with Pandas?
我有一个函数 return 一些值:
def sigInput(audio):
...
...
...
return [mean, total, power]
data1 = sigInput('sound1.wav')
data2 = sigInput('sound2.wav')
data3 = sigInput('sound3.wav')
data4 = sigInput('sound4.wav')
df = pd.DataFrame({
'mean': [data1[0], data2[0], data3[0], data4[0]],
'total': [data1[1], data2[1], data3[1], data4[1]],
'power': [data1[2], data2[2], data3[2], data4[2]],
'label': ['data1', 'data2', 'data3', 'data4']
})
df.to_excel('expData.xlsx')
根据上面的代码,data1、data2、data3 和 data4 将根据函数 returns 具有三个值。我的目标是使用 pandas.
将这些数据导出到 excel
如果我有超过四个数据,可能有 10 个或 20 个数据,那么我必须手动编写 DataFrame
。
我的问题是如果 pd.DataFrame
中的内容有很多数据,如何使它更加动态?
感谢您的帮助
编写一个 for 循环来创建该列表的列表,然后将其传递到字典中。
s = [data1,data2,data3]
for i in range(len(s)):
d = s[i]
for j in range(0,4):
d = d[j]
您可以在列表中附加最后一个 d,然后继续
您可以创建一个包含标签名称和数据的字典,并在创建数据框时使用它,如下所示:
data_dict = {"data1":data1,"data2":data2,"data3":data3,"data4":data4,"data5":data5}
df = pd.DataFrame({
'mean': [x[0] for x in data_dict.values()],
'total': [x[1] for x in data_dict.values()],
'power': [x[2] for x in data_dict.values()],
'label': [x for x in data_dict.keys()]
})```
试试这样的东西:
data = [sigInput(f'sound{i}.wav') for i in range(1, 5)]
df = pd.DataFrame(data).assign(label=[f'data{i}' for i in range(1, 5)])
df.columns = ['mean', 'total', 'power', 'label']
我有一个函数 return 一些值:
def sigInput(audio):
...
...
...
return [mean, total, power]
data1 = sigInput('sound1.wav')
data2 = sigInput('sound2.wav')
data3 = sigInput('sound3.wav')
data4 = sigInput('sound4.wav')
df = pd.DataFrame({
'mean': [data1[0], data2[0], data3[0], data4[0]],
'total': [data1[1], data2[1], data3[1], data4[1]],
'power': [data1[2], data2[2], data3[2], data4[2]],
'label': ['data1', 'data2', 'data3', 'data4']
})
df.to_excel('expData.xlsx')
根据上面的代码,data1、data2、data3 和 data4 将根据函数 returns 具有三个值。我的目标是使用 pandas.
将这些数据导出到 excel如果我有超过四个数据,可能有 10 个或 20 个数据,那么我必须手动编写 DataFrame
。
我的问题是如果 pd.DataFrame
中的内容有很多数据,如何使它更加动态?
感谢您的帮助
编写一个 for 循环来创建该列表的列表,然后将其传递到字典中。
s = [data1,data2,data3]
for i in range(len(s)):
d = s[i]
for j in range(0,4):
d = d[j]
您可以在列表中附加最后一个 d,然后继续
您可以创建一个包含标签名称和数据的字典,并在创建数据框时使用它,如下所示:
data_dict = {"data1":data1,"data2":data2,"data3":data3,"data4":data4,"data5":data5}
df = pd.DataFrame({
'mean': [x[0] for x in data_dict.values()],
'total': [x[1] for x in data_dict.values()],
'power': [x[2] for x in data_dict.values()],
'label': [x for x in data_dict.keys()]
})```
试试这样的东西:
data = [sigInput(f'sound{i}.wav') for i in range(1, 5)]
df = pd.DataFrame(data).assign(label=[f'data{i}' for i in range(1, 5)])
df.columns = ['mean', 'total', 'power', 'label']