如何合并CSV';s使用熊猫展平数据
我有两个不同的CSV,它们共享一个共同的索引。(‘ID’) File1=对ID的重复数据消除:如何合并CSV';s使用熊猫展平数据,csv,python-3.x,pandas,Csv,Python 3.x,Pandas,我有两个不同的CSV,它们共享一个共同的索引。(‘ID’) File1=对ID的重复数据消除: ID 54634 1004789 7365412 File2=按ID和时间戳执行的操作: ID TimeStamp Action 54634 10/1/2015 12:38 XX 1004789 9/1/2015 11:14 YY 1004789 7/4/2015 9:10 ZZ 7365412 6/11/2015 13:44 WW 54634 8/1/2015 12
ID
54634
1004789
7365412
File2=按ID和时间戳执行的操作:
ID TimeStamp Action
54634 10/1/2015 12:38 XX
1004789 9/1/2015 11:14 YY
1004789 7/4/2015 9:10 ZZ
7365412 6/11/2015 13:44 WW
54634 8/1/2015 12:38 YY
54634 5/1/2015 12:38 ZZ
54634 3/1/2015 12:38 WW
我的简单代码如下:
import pandas as pd
import os
os.chdir(r"C:\Users\XXXXXX\Documents")
data = pd.read_csv('File1.csv')
data1 = pd.read_csv('File2.csv')
pd.merge(File1, File2, on ='ID')
上述代码导致:
ID TimeStamp Action
0 54634 10/1/2015 12:38 XX
1 54634 8/1/2015 12:38 YY
2 54634 5/1/2015 12:38 ZZ
3 54634 3/1/2015 12:38 WW
4 1004789 9/1/2015 11:14 YY
5 1004789 7/4/2015 9:10 ZZ
6 7365412 6/11/2015 13:44 WW
我想要完成的是拥有和结束数据集,这类似于:(操作通过时间戳升序附加到ID的右侧)
我已经玩了很多次“concat”,但还没有真正弄明白。(很明显,我不是一个新手)
我甚至不确定我是否能在熊猫身上完成我想做的事情
如果您有任何建议或指导,我们将不胜感激。听起来您在寻找某种类型的
groupby
;这将使您接近您想要的:
m = pd.merge(data1, data2, on ='ID')
m.groupby('ID').Action.apply(lambda x: ' '.join(x.tolist()))
ID
54634 XX YY ZZ WW
1004789 YY ZZ
7365412 WW
非常感谢。我想你的意思是“x”而不是“s”,但这完全有效。这是在“下降”(熊猫合并的默认设置)中,但我可以解决这个问题。你太棒了!
m = pd.merge(data1, data2, on ='ID')
m.groupby('ID').Action.apply(lambda x: ' '.join(x.tolist()))
ID
54634 XX YY ZZ WW
1004789 YY ZZ
7365412 WW