This is my
dataframe
Date Name Count
0 Sep-2015 Adam 3
1 Sep-2015 David 3
2 Sep-2015 Adam 4
3 Sep-2015 Adam 3
4 Sep-2015 David 6
5 Sep-2015 Hardik 1
6 Sep-2015 David 3
Now I want to unique
Name
with respect toDate
and enter in otherdataframe
. I tried this
df = pd.DataFrame((['Sep-2015', 'Adam',3 ],
['Sep-2015', 'David',3],
['Sep-2015', 'Adam',4],
['Sep-2015', 'Adam' ,3],
['Sep-2015', 'David',6],
['Sep-2015' , 'Hardik',1],
['Sep-2015' , 'David' ,3]),columns=['Date','Name','Count'])
df = df.drop_duplicates(['Date', 'Name'], keep='last')
df2 = pd.DataFrame ({i : [j for j in df['Count']] for i in df['Name']},index = [i for i in df['Date']])
I am getting this
Adam Hardik David
Sep-2015 3 3 3
Sep-2015 1 1 1
Sep-2015 3 3 3
Here data entry is somewhere wrong. The following is the expected output.
Adam Hardik David
Sep-2015 3 1 3
第一个问题来自
index=[i for i in df['Date']]
。一旦您这样做,它将为每个组件在df['Date']
中放置一行:您在2015年9月连续三次,因此它将创建三行:['Sep-2015', 'Sep-2015', 'Sep-2015']
第二个问题来自
{i : [j for j in df['Count']] for i in df['Name']}
,它对应于{'Adam': [3, 1, 3], 'Hardik': [3, 1, 3], 'David': [3, 1, 3]}
。我想那不是你所期望的假设您想要的输出,我猜您想要的是:
{'Adam': [3], 'Hardik': [1], 'David': [3]}
和['Sep-2015']
实现这一目标的一个想法是事先建造它,我的建议如下:
当然,可以修改循环以管理您的期望,特别是如果您的计划中有不同的日期
运行完
drop_duplicates()
后,您就在这里:尝试使用
pd.pivot_table()
如下所示:这将给你:
您要做的是一个透视表
pandas
已经有一个名为pd.pivot_table
的方法尝试:
输出:
相关问题 更多 >
编程相关推荐