Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 丢弃复制的和concat的熊猫_Python 3.x_Pandas_Dataframe_Concat - Fatal编程技术网

Python 3.x 丢弃复制的和concat的熊猫

Python 3.x 丢弃复制的和concat的熊猫,python-3.x,pandas,dataframe,concat,Python 3.x,Pandas,Dataframe,Concat,我有一个如下所示的数据帧: 'id': ["1", "2", "1", "3", "3", "4"], 'date': ["2017", "2011", "2019", "2013", "2017", "2018"], 'code': ["CB25", "CD15", "CZ10", None, None, "AZ51"], 'col_example': ["22", None, "22", "55", "55", "121"], 'comments': ["bonjour", "bonjour

我有一个如下所示的数据帧:

'id': ["1", "2", "1", "3", "3", "4"],
'date': ["2017", "2011", "2019", "2013", "2017", "2018"],
'code': ["CB25", "CD15", "CZ10", None, None, "AZ51"],
'col_example': ["22", None, "22", "55", "55", "121"],
'comments': ["bonjour", "bonjour", "bonjour", "hola", "Hello", None]
结果:

  id   date  code      col_example   ....       comments
0  1   2019  CB25/CZ10          22   ....        bonjour (and not bonjour // bonjour)
1  2   2011  CD15             None   ....        bonjour
2  3   2017  None               55   ....  hola // Hello
3  4   2018  AZ51              121   ....           None
我想留一个身份证

如果两个ID相同,我希望:

如果comments=None和=str:只保留非None的注释(例如:id=1,保留注释“hello”) 如果两条注释=str:用“/”(示例id=3,comments=“hola//hello”)表示这两条注释

目前,我尝试使用sort\u值,但没有成功地删除了\u replicate

谢谢

我相信您需要按列
注释
,然后使用
加入
,最后添加将空字符串替换为
行:

df1 = (df.groupby('id')
         .agg({'date': 'last',
               'comments': lambda x: ' // '.join(x.dropna())})
         .replace({'comments': {'': None}})
         .reset_index())

print (df1)
  id  date       comments
0  1  2019        bonjour
1  2  2011        bonjour
2  3  2017  hola // Hello
3  4  2018           None
编辑:为了避免删除所有列,必须对所有列进行聚合,您可以为动态聚合创建字典,如:

df = pd.DataFrame({'id': ["1", "2", "1", "3", "3", "4"],
'date': ["2017", "2011", "2019", "2013", "2017", "2018"],
'code': ["CB25", "CD15", "CB25", None, None, "AZ51"],
'col_example': ["22", None, "22", "55", "55", "121"],

'comments': [None, "bonjour", "bonjour", "hola", "Hello", None]})
print (df)
  id  date  code col_example comments
0  1  2017  CB25          22     None
1  2  2011  CD15        None  bonjour
2  1  2019  CB25          22  bonjour
3  3  2013  None          55     hola
4  3  2017  None          55    Hello
5  4  2018  AZ51         121     None

d = dict.fromkeys(df.columns.difference(['id','comments']), 'last')
d['comments'] = lambda x: ' // '.join(x.dropna())
print (d)
{'code': 'last', 'col_example': 'last', 'date': 'last', 
       'comments': <function <lambda> at 0x000000000ECA99D8>}

df1 = (df.groupby('id')
         .agg(d)
         .replace({'comments': {'': None}})
         .reset_index())

print (df1)
  id  code col_example  date       comments
0  1  CB25          22  2019        bonjour
1  2  CD15        None  2011        bonjour
2  3  None          55  2017  hola // Hello
3  4  AZ51         121  2018           None
df=pd.DataFrame({'id':[“1”、“2”、“1”、“3”、“3”、“4”],
“日期”:[“2017”、“2011”、“2019”、“2013”、“2017”、“2018”],
‘代码’:[“CB25”、“CD15”、“CB25”、无、无、“AZ51”],
“col_示例”:[“22”,无,“22”,“55”,“55”,“121”],
“评论”:[无,“你好”,“你好”,“你好”,“你好”,“无])
打印(df)
id日期代码列示例注释
0 1 2017 CB25 22无
2011年12月15日无你好
2 1 2019 CB25 22你好
3 2013年3月无55 hola
4 3 2017无55喂
5 4 2018 AZ51 121无
d=dict.fromkeys(df.columns.difference(['id','comments']),'last')
d['comments']=lambda x:'/'.join(x.dropna())
印刷品(d)
{'code':'last','col_example':'last','date':'last',
“评论”:
df1=(df.groupby('id'))
.agg(d)
.replace({'comments':{':None}})
.reset_index())
打印(df1)
id代码列示例日期注释
01 CB25 22 2019年你好
1 2 CD15无2011年你好
2 3无55 2017 hola//你好
3 4 AZ51 121 2018无

能否添加预期输出数据帧?答案为thx。它可以工作,但是如果一个id有一个comments=None,我就没有df1中的id。。。示例:id=3,comments=None结果:我没有id=3,comments=None非常感谢,如果我想保留“col2”列?@Eolynas-oops,我错过了它。@Eolynas-dates的逻辑是什么?因为对于
id=1
它是每个
id
的第一个
日期,对于
id=3
它是最后一个日期。没有真正的逻辑。。。这只是一个例子,对不起^^最后的日期是完美的