我有大量的CSV文件,我需要获取其中的一个子集(在本例中为9)并使用Plotly绘制数据。我编写了以下for循环,该循环读取每个文件,创建一个数据框,然后进行绘图。但是,我想尽办法自动将每个图添加到子图的每一行和每一列。也就是说,第一个图位于第1行,第1列/第4个子图位于第2行,第1列,第8个子图位于第3行,第2列等。有关如何实现此目的的任何想法。最后一行需要更改(row = idx,col = idx)
os.chdir('D:\GEE\Datasets')
dirlist = os.listdir()
no_of_items = 9
Fig = make_subplots(rows = 3, cols = 3)
for idx,fname in enumerate(dirlist[0:9]):
Df = pd.read_csv(fname)
try:
Df['ts'] = pd.to_datetime(Df['ts'],format = '%d/%m/%Y')
except:
Df['ts'] = pd.to_datetime(Df['ts'],format = '%Y/%m/%d')
Fig.add_trace(
go.Scatter(
x = Df['ts'],
y = Df['fitted.values'],
mode = 'lines'
),
row = idx,col = idx
)
答案 0 :(得分:1)
首先,我会担心0:9是10个数字而不是9。 但是,假设您使用0:8,则可以使用
import math
row = idx%3 + 1
col = math.floor(idx/3) + 1
如果您使用1:9,只需删除“加1”
或者,如果您不想导入数学,也可以这样做
row = idx%3 + 1
col = int(str((idx/3) + 1)[0])
我很好奇专家们如何做到这一点,因为我敢肯定还有一些更优雅的东西