Pandas Combining header rows error: too many values to unpack
Pandas Combining header rows error: too many values to unpack
我正在尝试遵循这个 Whosebug 问题的答案: 因为我有同样的需求。
我已将此数据放入 foobar.txt:
first,bar,baz,foo
second,one,two,three
A,1,2,3
B,8,9,10
我想创建一个如下所示的数据框:
first-second bar-one baz-two foo-three
A 1 2 3
B 8 9 10
我正在关注链接问题的第一个答案,它使用列表理解,所以我的整个代码如下所示:
import pandas as pd
df = pd.read_csv(r'C:\Temp\foobar.txt')
df.columns = [f'{i}{j}' for i, j in df.columns]
但是,我得到一个 “太多值无法解包错误”:
Exception has occurred: ValueError
too many values to unpack (expected 2)
File ".\test.py", line 32, in <listcomp>
df.columns = [f'{i}{j}' for i, j in df.columns]
File ".\test.py", line 32, in <module>
df.columns = [f'{i}{j}' for i, j in df.columns]
我查看了其他人遇到相同错误的示例,我确定这是因为我有来自 df.columns 的 2 个以上的值,但我不确定如何解决这个问题,我也不明白为什么我上面链接的答案没有解决这个问题。
您必须通过指定 header 行来读取 CSV 以获得 MultiIndex
df = pd.read_csv(r'C:\Temp\foobar.txt', header=[0,1])
df.columns
MultiIndex([('first', 'second'),
( 'bar', 'one'),
( 'baz', 'two'),
( 'foo', 'three')],
)
df.columns = [f'{i}{j}' for i, j in df.columns]
df.columns
Index(['firstsecond', 'barone', 'baztwo', 'foothree'], dtype='object')
我正在尝试遵循这个 Whosebug 问题的答案:
我已将此数据放入 foobar.txt:
first,bar,baz,foo
second,one,two,three
A,1,2,3
B,8,9,10
我想创建一个如下所示的数据框:
first-second bar-one baz-two foo-three
A 1 2 3
B 8 9 10
我正在关注链接问题的第一个答案,它使用列表理解,所以我的整个代码如下所示:
import pandas as pd
df = pd.read_csv(r'C:\Temp\foobar.txt')
df.columns = [f'{i}{j}' for i, j in df.columns]
但是,我得到一个 “太多值无法解包错误”:
Exception has occurred: ValueError
too many values to unpack (expected 2)
File ".\test.py", line 32, in <listcomp>
df.columns = [f'{i}{j}' for i, j in df.columns]
File ".\test.py", line 32, in <module>
df.columns = [f'{i}{j}' for i, j in df.columns]
我查看了其他人遇到相同错误的示例,我确定这是因为我有来自 df.columns 的 2 个以上的值,但我不确定如何解决这个问题,我也不明白为什么我上面链接的答案没有解决这个问题。
您必须通过指定 header 行来读取 CSV 以获得 MultiIndex
df = pd.read_csv(r'C:\Temp\foobar.txt', header=[0,1])
df.columns
MultiIndex([('first', 'second'),
( 'bar', 'one'),
( 'baz', 'two'),
( 'foo', 'three')],
)
df.columns = [f'{i}{j}' for i, j in df.columns]
df.columns
Index(['firstsecond', 'barone', 'baztwo', 'foothree'], dtype='object')