Python 绕过“混凝土错误”;重新索引仅对唯一值索引对象有效;
我有3个数据帧,包括来自同一组的信息,现在我正试图通过组Python 绕过“混凝土错误”;重新索引仅对唯一值索引对象有效;,python,pandas,dataframe,concatenation,Python,Pandas,Dataframe,Concatenation,我有3个数据帧,包括来自同一组的信息,现在我正试图通过组concate这些数据帧,通过set_index作为组名,但是由于df1包含的索引不是唯一的,因此我无法concate它们。有没有办法绕过这个问题 输入df的示例: df1: group A B cat 1 0 cat 2 7 cat 5 5 dog 0.4 1 dog 2 4 dog 8
concate
这些数据帧,通过set_index
作为组名,但是由于df1
包含的索引不是唯一的,因此我无法concate
它们。有没有办法绕过这个问题
输入df的示例:
df1:
group A B
cat 1 0
cat 2 7
cat 5 5
dog 0.4 1
dog 2 4
dog 8 7
seal 7 5
seal 1 8
seal 7 9
df2:
group C D
cat 1 3
seal 0 5
dog 3 4
df3:
group E F
cat 1 5
dog 0 3
seal 5 9
通缉输出:
group A B C D E F
cat 1 0 1 3 1 5
cat 2 7 1 3 1 5
cat 5 5 1 3 1 5
dog 0.4 1 3 4 0 3
dog 2 4 3 4 0 3
dog 8 7 3 4 0 3
seal 7 5 0 5 5 9
seal 1 8 0 5 5 9
seal 7 9 0 5 5 9
我的代码:
df1 = pd.read(file).set_index('group')
df2 = pd.read(file).set_index('group')
df3 = pd.read(file).set_index('group')
all_data = pd.concate(df1, df2, df3, axis = 1).reset_index()
错误:
pandas.core.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
谢谢 我认为如果尺寸相同,可以先使用df2
和df3
,然后:
也可以在中使用参数index\u col
:
谢谢对于少量数据帧,这是一种很好的方法。但是如果大量数据帧可能需要多次
concate
和join
,您认为有没有办法同时concate
并绕过此唯一值
错误?谢谢我认为concat
可以完美地处理多个数据帧,如果需要多个连接,可以使用类似的merge(how='left')
by answer.thx,这篇文章很有帮助!实际上我更喜欢merge
,因为join
似乎需要在相同的索引位置使用公共值。到目前为止,我没有看到merge
和join
之间的区别。。。谢谢很高兴你能帮忙!天气真好!
df = pd.concat([df2.set_index('group'), df3.set_index('group')], axis = 1)
all_data = df1.join(df, on='group')
print (all_data)
group A B C D E F
0 cat 1.0 0 1 3 1 5
1 cat 2.0 7 1 3 1 5
2 cat 5.0 5 1 3 1 5
3 dog 0.4 1 3 4 0 3
4 dog 2.0 4 3 4 0 3
5 dog 8.0 7 3 4 0 3
6 seal 7.0 5 0 5 5 9
7 seal 1.0 8 0 5 5 9
8 seal 7.0 9 0 5 5 9
df1 = pd.read(file)
df2 = pd.read(file, index_col='group')
df3 = pd.read(file, index_col='group')
df = pd.concat([df2, df3], axis = 1)
all_data = df1.join(df, on='group')