我试图做集中
为四个DataFrames
。df
具有唯一索引
和其他3
在index
中具有重复值
。这是我的代码:
import pandas as pd
data = {'id':['1','2','3','4','5','6'],
'name':['A1','A2','A2','A1','A3','A3'],
'date_create':['28-01-2020','15-02-2020','15-03-2020',
'25-03-2020','01-04-2020','30-05-2020']}
df = pd.DataFrame(data)
data = {'userid':['1','2','3','3','5','6'],
'likesDate':['28-01-2020','15-02-2020','15-03-2020',
'25-03-2020','01-04-2020','30-05-2020']}
df1 = pd.DataFrame(data)
data = {'userid':['1','1','2','4','6','6'],
'dislikesDate':['8-01-2020','1-02-2020','15-03-2020',
'25-03-2020','01-04-2020','30-05-2020']}
df2 = pd.DataFrame(data)
data = {'userid':['1','2','2','4','4','6'],
'DeleteDate':['28-01-2020','15-02-2020','15-03-2020',
'25-03-2020','05-04-2020','23-05-2020']}
df3 = pd.DataFrame(data)
df.set_index('id', inplace=True)
df1.set_index('userid', inplace=True)
df2.set_index('userid', inplace=True)
df3.set_index('userid', inplace=True)
df_final = pd.concat([df,df1, df2,df3],axis=1)
print(df_final)
我得到这个错误:
ValueError: Shape of passed values is (7, 5), indices imply (6, 5)
什么,我哪里做错了?
IIUC,您可以链接连接
,而不是使用concat
,因为您有重复的索引值。如果只有3个数据帧,则可能可以完全写入:
df_final = df.join(df1).join(df2).join(df3)
print(df_final.head())
# name date_create likesDate dislikesDate DeleteDate
# 1 A1 28-01-2020 28-01-2020 8-01-2020 28-01-2020
# 1 A1 28-01-2020 28-01-2020 1-02-2020 28-01-2020
# 2 A2 15-02-2020 15-02-2020 15-03-2020 15-02-2020
# 2 A2 15-02-2020 15-02-2020 15-03-2020 15-03-2020
# 3 A2 15-03-2020 15-03-2020 NaN NaN
但是,如果您想要一个能够接受更多数据帧的更灵活的解决方案,请使用reduce
from functools import reduce
df_final = (
reduce(lambda x,y:x.join(y), [df,df1, df2,df3]) # same a chaining joins
.rename_axis('user_id').reset_index() # user id back as a column if needed
)
print(df_final)
# user_id name date_create likesDate dislikesDate DeleteDate
# 0 1 A1 28-01-2020 28-01-2020 8-01-2020 28-01-2020
# 1 1 A1 28-01-2020 28-01-2020 1-02-2020 28-01-2020
# 2 2 A2 15-02-2020 15-02-2020 15-03-2020 15-02-2020
# 3 2 A2 15-02-2020 15-02-2020 15-03-2020 15-03-2020
# 4 3 A2 15-03-2020 15-03-2020 NaN NaN
# 5 3 A2 15-03-2020 25-03-2020 NaN NaN
# 6 4 A1 25-03-2020 NaN 25-03-2020 25-03-2020
# 7 4 A1 25-03-2020 NaN 25-03-2020 05-04-2020
# 8 5 A3 01-04-2020 01-04-2020 NaN NaN
# 9 6 A3 30-05-2020 30-05-2020 01-04-2020 23-05-2020
# 10 6 A3 30-05-2020 30-05-2020 30-05-2020 23-05-2020
我不确定我在哪里误入歧途,但我似乎无法重置数据帧上的索引。 当我运行时,我得到下面的输出: 如您所见,数据帧是一个切片,因此索引超出了范围。我想做的是重置此数据帧的索引。所以我运行。这将产生以下结果: 这看起来像是一个新的索引,但事实并非如此。运行同样,索引仍然相同。试图使用或会导致数据帧出现问题。 如何才能真正重置索引?
问题内容: 在Pandas方法的文档中,我们具有: 我的结构如下: 我想要这样的东西: 但是当我运行该方法时,它是在说: 这没有意义,即使在示例中,该列上也有重复的条目。我将列用作数据透视表的索引,即方法调用的第一个参数。 问题答案: 对我来说还好吗?您可以发布正在使用的确切数据透视方法调用吗?
我开始学习熊猫,发现了一个我似乎无法解决的问题。我正在从csv文件加载数据,需要删除一些与几个字符串匹配的行。 CSV: 我所尝试的: 但我得到的错误如下: 我错过了什么?另外,如果我想传递一个列表并从列表中删除所有匹配字符串的行,该怎么办?例子:
我有1个数据帧,我想选择所有没有重复的行 我的df: 我的输出应该是: 我正在使用熊猫数据框 有什么建议吗?
问题内容: 因此,我了解到可以使用DataFrame.groupby而不用使用MultiIndex进行子采样/横截面。 另一方面,当我在DataFrame上具有MultiIndex时,仍然需要使用DataFrame.groupby进行子采样/横截面。 那么,除了在打印时非常有用和漂亮地显示层次结构之外,MultiIndex有什么好处? 问题答案: 在pandas 0.4版本中引入了分级索引(也称为