在Python中将dataframe转换为其他dataframe的列
我有两个数据集: df1: df2: 在Python(pandas或其他库)中是否有任何方法可以合并这两个数据帧,从而使df2成为df1中的新列 预期的产出将是:在Python中将dataframe转换为其他dataframe的列,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据集: df1: df2: 在Python(pandas或其他库)中是否有任何方法可以合并这两个数据帧,从而使df2成为df1中的新列 预期的产出将是: Name Answers Questions People-reached Reputation Project-details Alex Gaynor 154 44 ~1.4m 8,871 python 337 93
Name Answers Questions People-reached Reputation Project-details
Alex Gaynor 154 44 ~1.4m 8,871 python 337 93
django-templates 22 4
slug 12 1
google-app-engine 8 1
如果需要保留添加字段的列结构,可以创建列多索引 如果只需要将信息作为列存储在
df1
中的df2
中,则可以创建一列,其中包含df2.值的列表
选项1:保留柱结构
# first merge df1 and df2
df2.index = ["Alex Gaynor"] * len(df2)
merged = df1.merge(df2, left_on="Name", right_index=True)
# now create multi-index columns
top_lvl = df1.columns.tolist() + ["project_details"]*3
bottom_lvl = [" "]*len(df.columns) + df2.columns.tolist()
merged.columns = [top_lvl, bottom_lvl]
merged
Name Answers Questions People-reached Reputation project_details \
Project
0 Alex Gaynor 154 44 ~1.4m 8,871 python
0 Alex Gaynor 154 44 ~1.4m 8,871 django-templates
0 Alex Gaynor 154 44 ~1.4m 8,871 slug
0 Alex Gaynor 154 44 ~1.4m 8,871 google-app-engine
0 Alex Gaynor 154 44 ~1.4m 8,871 django
0 Alex Gaynor 154 44 ~1.4m 8,871 clang
Total-score Post
0 337 93
0 22 4
0 12 1
0 8 1
0 235 57
0 22 2
如果确实需要第一行下面的所有df1
条目为空,您可以执行以下操作:
merged.iloc[1:, :5] = ""
merged
Name Answers Questions People-reached Reputation project_details \
Project
0 Alex Gaynor 154 44 ~1.4m 8,871 python
0 django-templates
0 slug
0 google-app-engine
0 django
0 clang
Total-score Post
0 337 93
0 22 4
0 12 1
0 8 1
0 235 57
0 22 2
选项2:只需将df2
信息存储在一列中
df1["project_details"] = [df2.values]
df1
Name Answers Questions People-reached Reputation \
0 Alex Gaynor 154 44 ~1.4m 8,871
project_details
0 [[python, 337, 93], [django-templates, 22, 4],...
如果需要保留添加字段的列结构,可以创建列多索引
如果只需要将信息作为列存储在df1
中的df2
中,则可以创建一列,其中包含df2.值的列表
选项1:保留柱结构
# first merge df1 and df2
df2.index = ["Alex Gaynor"] * len(df2)
merged = df1.merge(df2, left_on="Name", right_index=True)
# now create multi-index columns
top_lvl = df1.columns.tolist() + ["project_details"]*3
bottom_lvl = [" "]*len(df.columns) + df2.columns.tolist()
merged.columns = [top_lvl, bottom_lvl]
merged
Name Answers Questions People-reached Reputation project_details \
Project
0 Alex Gaynor 154 44 ~1.4m 8,871 python
0 Alex Gaynor 154 44 ~1.4m 8,871 django-templates
0 Alex Gaynor 154 44 ~1.4m 8,871 slug
0 Alex Gaynor 154 44 ~1.4m 8,871 google-app-engine
0 Alex Gaynor 154 44 ~1.4m 8,871 django
0 Alex Gaynor 154 44 ~1.4m 8,871 clang
Total-score Post
0 337 93
0 22 4
0 12 1
0 8 1
0 235 57
0 22 2
如果确实需要第一行下面的所有df1
条目为空,您可以执行以下操作:
merged.iloc[1:, :5] = ""
merged
Name Answers Questions People-reached Reputation project_details \
Project
0 Alex Gaynor 154 44 ~1.4m 8,871 python
0 django-templates
0 slug
0 google-app-engine
0 django
0 clang
Total-score Post
0 337 93
0 22 4
0 12 1
0 8 1
0 235 57
0 22 2
选项2:只需将df2
信息存储在一列中
df1["project_details"] = [df2.values]
df1
Name Answers Questions People-reached Reputation \
0 Alex Gaynor 154 44 ~1.4m 8,871
project_details
0 [[python, 337, 93], [django-templates, 22, 4],...
您可以将dataframe设置为字符串,并将值添加到新列的第一行:
# make df into string
df_string = df2.to_string(index=False, header=False)
# make new column
df1["project_details"] = np.nan
# add df_string to first row in new column
df1.iloc[0, df1.columns.get_loc('project_details')] = df_string
您可以将dataframe设置为字符串,并将值添加到新列的第一行:
# make df into string
df_string = df2.to_string(index=False, header=False)
# make new column
df1["project_details"] = np.nan
# add df_string to first row in new column
df1.iloc[0, df1.columns.get_loc('project_details')] = df_string
你能显示你想要的输出吗?@andrew_reece我已经添加了想要的输出你想要整个df作为一个字符串出现在一个新的列中,全部在df1
的第一行?@sundance是的。你在新列和df1Trypd的第一行都是对的。concat([df1,df2],1)
你能显示你想要的输出吗?@andrew_reece我已经添加了想要的输出你想要整个df作为字符串在一个新列中,都在df1
的第一行吗?@sundance是的。在新列和df1Trypd.concat([df1,df2],1)