合并Pandas的参数

时间:2012-11-08 22:04:48

标签: python pandas

我在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后缀的重叠列。

我知道必须有一些我不理解的东西,因为这似乎不是一种罕见的情况。

1 个答案:

答案 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