猿问

合并(从右侧加入)目录中的所有文件

我正在尝试在一个目录中合并多个 .txt 文件,该目录专门合并在数据框中的一个常见列X上。

import pandas as pd


  df1 = pd.DataFrame({'X': ['X0', 'X1', 'X2', 'X3'],

       ...:                     'B': ['B0', 'B1', 'B2', 'B3'],

       ...:                     'C': ['C0', 'C1', 'C2', 'C3'],

       ...:                     'D': ['D0', 'D1', 'D2', 'D3']})



df2 = pd.DataFrame({'X': ['X0', 'X1', 'X2', 'X3'],

   ...:                     'G': ['G0', 'G1', 'G2', 'G3'],

   ...:                     'H': ['H0', 'H1', 'H2', 'H3'],

   ...:                     'J': ['J0', 'J1', 'J2', 'J3']})

通过遵循以前的帖子解决方案,我构建了以下代码


filepath = "D:\\test"


data=[]

for file in glob.iglob(filepath + '/*.txt', recursive=True):

    

    print(file)

    

    df=pd.read_csv(file, header=0, skiprows=0, skipfooter=0, na_values=(""," ","NA"))

    data=data.append(df)

    

data_merge = pd.concat(data, keys = ('X'))    

但我得到了


AttributeError:“NoneType”对象没有“附加”属性


如何通过公共列加入两个数据名?


预期输出

http://img2.mukewang.com/62d615b500014d7403360145.jpg

慕尼黑5688855
浏览 89回答 2
2回答

catspeake

换行data=data.append(df)和data.append(df.set_index('X'))这会将X列设置为索引并将它们添加到数据数组中。然后您需要将合并线更改为data_merge = pd.concat(data, axis=1).reset_index()这将导致print(data_merge.mark_down())|    | X   | B   | C   | D   | G   | H   | J   ||---:|:----|:----|:----|:----|:----|:----|:----||  0 | X0  | B0  | C0  | D0  | G0  | H0  | J0  ||  1 | X1  | B1  | C1  | D1  | G1  | H1  | J1  ||  2 | X2  | B2  | C2  | D2  | G2  | H2  | J2  ||  3 | X3  | B3  | C3  | D3  | G3  | H3  | J3  |

幕布斯6054654

替换这一行:data=data.append(df)有了这个:data.append(df)与append与 pandas (即df = df.append(dict1))一起使用不同,append在列表上使用方法时,您不需要重新定义它
随时随地看视频慕课网APP

相关分类

Python
我要回答