Pandas 如何对付熊猫;id变量需要唯一标识每一行;?
我有一个数据帧,如:Pandas 如何对付熊猫;id变量需要唯一标识每一行;?,pandas,Pandas,我有一个数据帧,如: df=pd.DataFrame({ 'name1': ['A', 'A', 'C','B','C','A','D'], 'name2': ['D', 'B', 'A','D','B','C','A'], 'text': ['cars', 'cars', 'flower', 'tea','ball','phone','ice'], 'time':['10/01','10/01','10/01','10/01','10/02','10/02','
df=pd.DataFrame({
'name1': ['A', 'A', 'C','B','C','A','D'],
'name2': ['D', 'B', 'A','D','B','C','A'],
'text': ['cars', 'cars', 'flower', 'tea','ball','phone','ice'],
'time':['10/01','10/01','10/01','10/01','10/02','10/02','10/02'],
'Flag1':[1,1,2,0,2,1,0],
'Flag2':[0,0,1,0,0,2,1]})
期望:
pd.DataFrame({
'name': ['A', 'B', 'C','D','A','B','C'],
'text': ['cars,flower','cars,tea', 'flower', 'cars,tea','phone,ice','ball','phone'],
'time':['10/01','10/01','10/01','10/01','10/02','10/02','10/02'],
'Flag':[1,0,2,0,1,0,2]})
我想根据“时间”组合信息。列按“时间”合并
'name':'name1'和'name2'合并为'name'
“单词”:每天,单词出现在同一用户的行中时会被合并
“时间”:用户当天出现的日期
'Flag':'Flag1'和'Flag2'合并为'Flag'。每个用户都有一个唯一的
无论日期是什么,“标志”(“0”、“1”、“2”)
但当我这样做的时候:
pd.wide_to_long(df, stubnames=["name", "Flag"], i=["text", "time"], j="ref",
suffix="\d*").reset_index().groupby(["name","time"],
as_index=False).agg({"text": ",".join, "Flag": "first"}).sort_values(["time", "name"])
我得到:
id variables need to uniquely identify each row
如何处理这个问题?让我知道这是否适合您。尝试: 通过获取索引来重塑形状,以用作唯一标识符
i
:
m = pd.wide_to_long(df.reset_index(), stubnames=["name", "Flag"], i="index", j="num")
使用groupby和一些文本操作,通过Munge获得所需的输出:
(
m.groupby(["name", "time"])
.agg(Flag=("Flag", "first"), text=("text", lambda x: ",".join(set(x))))
.reset_index()
.sort_values("time")
)
name time Flag text
0 A 10/01 1 flower,cars
2 B 10/01 0 tea,cars
4 C 10/01 2 flower
6 D 10/01 0 tea,cars
1 A 10/02 1 phone,ice
3 B 10/02 0 ball
5 C 10/02 2 phone,ball
7 D 10/02 0 ice
预期输出是什么?添加了预期。10/02应该有一个D,对吗?另外,10/02的C应该是phone和ball的组合。当我执行第二步时,我得到:aggregate()缺少1个必需的位置参数:“arg”你能分步运行它吗,这样你就可以找到错误的来源了?所以把
m.groupby([“name”,“time”])之后的所有东西都拿出来,看看它是否有效。如果有效,只添加.agg(Flag=(“Flag”,“first”)
,然后查看是否得到结果;如果有效,则将文本部分添加到agg
中,然后查看是否有效。这只是找到错误所在的一种方法。我使用的熊猫版本是1.1.1