多个数据帧的垂直合并和第一列值的变化

2024-09-29 01:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将多个.csv导入一个数据帧。每个.csv文件都有相同的列数和列名

第一列是x,其他n列都是y。每x列从0开始,继续执行某些步骤,例如=0.5或0.25,并结束到列的长度

当我加入多个文件时,我希望第二个文件从第一个文件的最后一个值+时间步继续,第三个、第四个和第n个.csv文件也是如此

例如,第一个.csv文件x列以值6结尾,时间步长为0.25,因此第二个.csv文件应继续6+0.25=6.25

我使用一个代码从以下位置加载数据帧中的多个.csv文件:

Import multiple csv files into pandas and concatenate into one DataFrame

下面是两张描述我问题的图片:

如果在加载每个.csv文件后保留列值:https://imgur.com/zNchMOa

这就是我在加载所有.csv文件时需要实现的:https://imgur.com/dqk2qza

CSV文件:

https://sharecsv.com/s/14b6f07c30a95080c911da98d6017a2a/test1.csvhttps://sharecsv.com/s/a7463838fb74d42c603c407ef9f904dd/test2.csvhttps://sharecsv.com/s/6dbebaef902ca916bdb93b51c34f1a82/test3.csvhttps://sharecsv.com/s/a52562cbf5be32026644befda5d66139/test4.csv

我尝试从新创建的数据帧中的第一个.csv文件获取时间步长,获取新数据帧的长度,然后用新值替换列X

您可以在下面找到我的代码和手动解决方案,我想自动执行:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
import glob

# Importing Multiple Data:

path = r'C:\Users\All...'   
all_files = glob.glob(os.path.join(path, "*.csv"))

df_from_each_file = (pd.read_csv(f) for f in all_files)
df = pd.concat(df_from_each_file, ignore_index=True)

# Plot 1

plt.plot(df["x"], df["y1"], "r")

# Replace X values (manualy)

dt = df["x"][1]-df["x"][0] # Time step (Manualy added)
n = pd.Series(np.arange(0, len(df["y1"])))*dt # n is replacing x in df
df["x"] = n

# Plot 2

plt.plot(df["x"], df["y1"], "b")

Tags: 文件csv数据httpsimportcomdfas