通过将通用名称保留在同一行而不使用nans来联接数据框

时间:2019-01-07 15:30:43

标签: python pandas

我想以这种特殊方式将这两个数据框连接起来。

df:

    name ... time
0   Tom  ...  13
1   Tom  ...  16
2   Ben  ...  10
3   Ben  ...  12

和df1:

   name ... time
0   Tom  ...  8
1   Ben  ...  6

做...

    name ... time time1
0   Tom  ...  13    8
1   Tom  ...  16    8
2   Ben  ...  10    6
3   Ben  ...  12    6

基本上df1包含Tom和Ben最快的时间,而df包含所有其他时间。我想合并数据帧,因此最快的时间总是与其他时间在同一行。任何帮助,将不胜感激。在此先感谢。

1 个答案:

答案 0 :(得分:2)

您只需使用merge进行操作,然后根据需要重命名列名称。

import pandas as pd

# First sheet, use your SQL data
d = {'col1': [1, 2], 'col2': [3, 4]}
df_sheet_1 = pd.DataFrame(data=d)

# Second sheet, read the code of Python script, split it up on new lines, add to dataframe
with open(__file__) as input_file:
    python_script = input_file.read()

d = {'code':python_script.split('\n')}
python_df_sheet_2 = pd.DataFrame(data=d)


writer = pd.ExcelWriter('testoutput.xlsx')
df_sheet_1.to_excel(writer, index=False, sheet_name='test1')
python_df_sheet_2.to_excel(writer, index=False, sheet_name='python_code')
writer.save()

更改列名:

>>> df = pd.merge(df1, df2, how='outer', on='name')
>>> df
  name  time_x  time_y
0  Tom      13       8
1  Tom      16       8
2  Ben      10       6
3  Ben      12       6