Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 pandas OrderedICT条带空间读取\u excel_Python_Pandas_Strip_Ordereddict - Fatal编程技术网

Python pandas OrderedICT条带空间读取\u excel

Python pandas OrderedICT条带空间读取\u excel,python,pandas,strip,ordereddict,Python,Pandas,Strip,Ordereddict,我有一个超过100张的excel文件。我需要导入pandas并创建一个数据帧。问题是一些列标题包含空格,所以我得到了一个包含一些重复列的数据帧 是否可以按顺序删除列中的空格?我知道我可以在数据框中使用str.strip(),但找不到OrderedDict的任何内容 我在excel中有以下结构: sheet TEST: 'ID1' 'ID2' 'ID3' 'ID4' 1 A 2016 val val 2 B 2017 val val 3

我有一个超过100张的excel文件。我需要导入pandas并创建一个数据帧。问题是一些列标题包含空格,所以我得到了一个包含一些重复列的数据帧

是否可以按顺序删除列中的空格?我知道我可以在数据框中使用
str.strip()
,但找不到OrderedDict的任何内容

我在excel中有以下结构:

sheet TEST:
   'ID1' 'ID2'  'ID3'  'ID4'
1   A     2016   val    val 
2   B     2017   val    val
3   C     2018   val    val

sheet TEST2:
   'ID1' 'ID2'  'ID3 ' 'ID4'
1   A     2016   val    val 
2   B     2017   val    val
3   C     2018   val    val

sheet TEST3:
   'ID1' 'ID2'  'ID3' 'ID4 '
1   A     2016   val    val 
2   B     2017   val    val
3   C     2018   val    val
目前,我做了以下工作:

df = pd.read_excel (File location, sheet_name = ['TEST', 'TEST2', 'TEST3'])

df = pd.concat(df, axis=0, sort=False)
df = df.reset_index()
这就是我得到的:

“ID1”“ID2”“ID3”“ID4”“ID3”“ID4”
1 A 2016年瓦尔楠楠
2 B 2017年瓦尔南南
3 C 2018瓦尔南南
4 A 2016年南瓦尔南
5 B 2017年南瓦尔南
6 C 2018南瓦尔南
7 A 2016瓦尔南瓦尔
8 B 2017瓦尔南瓦尔
9 C 2018瓦尔南瓦尔
这就是我需要的:

“ID1”“ID2”“ID3”“ID4”
1 A 2016 val val
2 B 2017年增值税
3 C 2018 val val
4 A 2016 val val
5 B 2017 val val
6 C 2018 val val
7 A 2016 val val
8 B 2017 val val
9 C 2018 val val

非常感谢

只需定义“单独”,以使其更容易:

df1 = pd.read_excel (File location TEST, sheet_name = 'TEST')
df2 = pd.read_excel (File location TEST2, sheet_name = 'TEST2')
df3 = pd.read_excel (File location TEST3, sheet_name = 'TEST3')
然后像这样做:

df = pd.concat([df1,df2,df3], axis=0)
df = df.reset_index()
希望有帮助:)

编辑:如果要将其应用于循环,只需执行以下操作: 假设您有150个工作表,并且工作表的名称是可编辑的,如“TEST”“TEST2”“TEST3”。“TEST150”


只需定义“单独”,以使其更容易:

df1 = pd.read_excel (File location TEST, sheet_name = 'TEST')
df2 = pd.read_excel (File location TEST2, sheet_name = 'TEST2')
df3 = pd.read_excel (File location TEST3, sheet_name = 'TEST3')
然后像这样做:

df = pd.concat([df1,df2,df3], axis=0)
df = df.reset_index()
希望有帮助:)

编辑:如果要将其应用于循环,只需执行以下操作: 假设您有150个工作表,并且工作表的名称是可编辑的,如“TEST”“TEST2”“TEST3”。“TEST150”


如果您正在阅读多张工作表,并且工作簿很大,则需要使用
pd.ExcelFile
创建
ExcelFile
对象,然后分别访问工作表。它还使列名的格式设置非常简单:

import pandas as pd

xls = pd.ExcelFile(filepath)

dfs = []
for sheet in xls.sheet_names:
    df = pd.read_excel(xls, sheet)
    df.columns = df.columns.str.strip()
    dfs.append(df)

df = pd.concat(dfs)

如果您正在阅读多张工作表,并且工作簿很大,则需要使用
pd.ExcelFile
创建
ExcelFile
对象,然后分别访问工作表。它还使列名的格式设置非常简单:

import pandas as pd

xls = pd.ExcelFile(filepath)

dfs = []
for sheet in xls.sheet_names:
    df = pd.read_excel(xls, sheet)
    df.columns = df.columns.str.strip()
    dfs.append(df)

df = pd.concat(dfs)

如果你把工作表分成不同的变量,比如df1=sheet1,df2=sheet2,df3=SHEET3,那就容易多了。如果你把工作表分成不同的变量,比如df1=sheet1,df2=sheet2,df3=SHEET3,那就容易多了。我不知道性能上的差异,你有没有测试过这个,或者你能为我的教育指出什么吗?是的,只是添加了一个链接到一个讨论这个问题的问题:很好的答案,我经常对n张的非常大的工作簿做同样的测试。我不知道性能差异,你测试过这个吗,或者你能为我的教育提供什么帮助吗?是的,刚刚添加了一个链接,指向讨论这个问题的问题: