我試圖根據一個鍵('r_id')合併多個文件,並用輸出文件的名稱重命名輸出中的列名。除了使用文件名重命名輸出外,我可以完成所有任務。我有以下錯誤可能是由舊版熊貓引起的。有沒有人知道如何解決這個問題,將更新的熊貓更新到新版本?如何解決AttributeError:'DataFrame'對象沒有屬性'分配'與更新熊貓?
錯誤
Traceback (most recent call last):
File "multijoin_2.py", line 19, in <module>
result = merge_files(files).reset_index()
File "multijoin_2.py", line 11, in merge_files
pd.read_csv(f, sep='\t', usecols=['r_id', 'exp'])
File "https://stackoverflow.com/users/xxx/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 2007, in __getattr__
(type(self).__name__, name))
AttributeError: 'DataFrame' object has no attribute 'assign'
輸入
$貓test1的
r_id g_id exp
r1 g1 20
r2 g1 30
r3 g1 1
r4 g1 3
$貓test2的
r_id gid exp
r1 g2 20
r2 g2 30
r3 g2 1
r4 g2 3
$貓TEST3
r_id g_id exp
r1 g3 30
r2 g3 40
r3 g3 11
r4 g3 32
期望輸出繼電器
r_id test3 test2 test1
0 r1 30 20 20
1 r2 40 30 30
2 r3 11 1 1
3 r4 32 3 3
工作代碼(除列命名)
import os
import glob
import pandas as pd
files = glob.glob(r'/path/test*')
def merge_files(files, **kwargs):
dfs = []
for f in files:
dfs.append(
pd.read_csv(f, sep='\t', usecols=['r_id', 'exp'])
#.assign(col=0)
.rename(columns={'col_name':os.path.splitext(os.path.basename(f))[0]})
.set_index(['repeat_id'])
)
return pd.concat(dfs, axis=1)
result = merge_files(files).reset_index()
print(result)
如果省略'#.assign (col = 0)'它不起作用? – jezrael
它的作品,但它只是不重命名的列。 – user1703276