Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在循环中附加多个数据帧?_Python_Pandas_Csv_Dataframe_Append - Fatal编程技术网

Python 如何在循环中附加多个数据帧?

Python 如何在循环中附加多个数据帧?,python,pandas,csv,dataframe,append,Python,Pandas,Csv,Dataframe,Append,我在python问题上绞尽脑汁已经有一段时间了,我被卡住了。我支持循环浏览多个csv文件,并希望有一个数据框附加csv文件,使每个csv文件中的一列成为列名,并设置日期和时间的通用索引 有11个csv文件与此数据帧相似,除了不同的值和pod编号外,但所有csv的时间戳是相同的 数据 pod time_stamp value 0 97 2016-02-22 3.048000 1 97 2016-02-29 23.622001 2 97 2016-03-07 13.

我在python问题上绞尽脑汁已经有一段时间了,我被卡住了。我支持循环浏览多个csv文件,并希望有一个数据框附加csv文件,使每个csv文件中的一列成为列名,并设置日期和时间的通用索引

有11个csv文件与此数据帧相似,除了不同的
pod
编号外,但所有csv的
时间戳
是相同的

数据

    pod time_stamp  value
0   97  2016-02-22  3.048000
1   97  2016-02-29  23.622001
2   97  2016-03-07  13.970001
3   97  2016-03-14  6.604000
4   97  2016-03-21  NaN
这是我到目前为止的for循环:

import glob
import pandas as pd

filenames = sorted(glob.glob('*.csv'))

new = []

for f in filenames:
    data = pd.read_csv(f)

    time_stamp = [pd.to_datetime(d) for d in time_stamp]

    new.append(data)

my_df = pd.DataFrame(new, columns=['pod','time_stamp','value'])
我想要的是这样一个数据框,其中每一列都是来自每个csv文件的
value
的结果

time_stamp  97        98       99 ...
2016-02-22  3.04800   4.20002  3.5500
2016-02-29. 23.62201  24.7392  21.1110
2016-03-07 13.97001   11.0284  12.0000
但是现在,
my_df
的输出非常错误,如下所示。知道我哪里出错了吗

    0
0   pod time_stamp value 0 22 2016-...
1   pod time_stamp value 0 72 2016-...
2   pod time_stamp value 0 79 2016-0...
3   pod time_stamp value 0 86 2016-...
4   pod time_stamp value 0 87 2016-...
5   pod time_stamp value 0 88 2016-...
6   pod time_stamp value 0 90 2016-0...
7   pod time_stamp value 0 93 2016-0...
8   pod time_stamp value 0 95 2016-...

我建议首先将所有数据帧与
pd.concat
连接在一起,然后执行最后一个
pivot
操作

filenames = sorted(glob.glob('*.csv'))

new = [pd.read_csv(f, parse_dates=['time_stamp']) for f in filenames]
df = pd.concat(new) # omit axis argument since it is 0 by default

df = df.pivot(index='time_stamp', columns='pod')
请注意,在加载数据帧时,我正在强制读取csv以解析时间戳,因此加载后不再需要解析


MCVE

df

   pod  time_stamp      value
0   97  2016-02-22   3.048000
1   97  2016-02-29  23.622001
2   97  2016-03-07  13.970001
3   97  2016-03-14   6.604000
4   97  2016-03-21        NaN

df.pivot(index='time_stamp', columns='pod')

                value
pod                97
time_stamp           
2016-02-22   3.048000
2016-02-29  23.622001
2016-03-07  13.970001
2016-03-14   6.604000
2016-03-21        NaN

您可以转换时间戳,但不将其重新分配。此外,您创建了一个新变量
rain
,但没有对它做任何操作。我将清理描述。这非常干净。杰出的非常感谢。@JAG2024谢谢,它应该是
axis=0
。打字错误。我喜欢它@谢谢你!