将值附加到循环中的列

时间:2018-05-15 13:16:16

标签: python-3.x pandas

我有各种包含数据的文件。我想从每个文件中提取一个特定的列,并创建一个新的数据框,其中一列包含所有提取的数据。

例如,我有3个文件:

A B C
1 2 3 
4 5 6

A B C
7 8 9
8 7 6

A B C
5 4 3
2 1 0 

新数据框应仅包含C列中的值:

C
3
6
9
6
3
0 

因此,应将第一个文件的列复制到新数据帧,第二个文件中的列应该与新数据帧相关。

到目前为止,我的代码看起来像这样:

import pandas as pd
import glob

for filename in glob.glob('*.dat'):

df= pd.read_csv(filename, delimiter="\t", header=6)
df1= df["Bias"]

print(df)

现在在每个循环步骤中都会覆盖df1。在每个循环步骤中创建临时数据帧然后将数据复制到新数据帧是不是一个好主意?

感谢任何输入!

1 个答案:

答案 0 :(得分:1)

list comprehension使用forappend循环list of DataFrame,如果只需要一些列,请添加参数usecols,最后concat全部一起为大DataFrame

dfs = [pd.read_csv(f, delimiter="\t", header=6, usecols=['C']) for f in glob.glob('*.dat')]

或者:

dfs = []
for filename in glob.glob('*.dat'):
    df = pd.read_csv(filename, delimiter="\t", header=6, usecols=['C'])
    #if need all columns 
    #df = pd.read_csv(filename, delimiter="\t", header=6)
    dfs.append(df)
df = pd.concat(dfs, ignore_index=True)