我在Python中有一个循环,它按顺序导入CSV文件,将它们分配给临时DataFrame对象,然后尝试将它们合并/合并为“主”DataFrame。代码如下:
for csv_path in csv_paths:
df = pd.read_csv(''+csv_path+'')
df = df.set_index('Player')
if len(MLS_Stats) == 0:
MLS_Stats = pd.concat([MLS_Stats,df])
else:
MLS_Stats = pd.merge(MLS_Stats, df, how="outer",left_index=True,right_index=True)
MLS_Stats DF最初是空的,这是if循环的原因,因为我认为你不能将DF与空DF合并。
对于每个合并,我想通过包含任何新的唯一索引行和新列来构建DataFrame,但排除重叠列。上面的代码目前包含带有_x和_y后缀的重叠列。
我知道必须有一些我不理解的东西,因为这似乎不是一种罕见的情况。
答案 0 :(得分:0)
您可以使用drop_duplicates
过滤重复的行,并选择仅加入尚不存在的列。
import pandas as pd
from StringIO import StringIO
data0 = """\
index,A,B
a,1,2
a,1,2
b,3,4
c,5,6
"""
data1 = """\
index,A,C
a,7,8
d,9,10
"""
df = pd.DataFrame()
columns = []
for data in [data0, data1]:
frame= pd.read_csv(StringIO(data), index_col=0).drop_duplicates()
frame = frame.ix[:, frame.columns - columns]
if len(frame):
df = df.join(frame, how='outer') if len(df) else frame
print df
结果:
A B C
index
a 1 2 8
b 3 4 NaN
c 5 6 NaN
d NaN NaN 10