我有如下两个 Dataframe, 我想将两个dataframe 合并成如下样子,请问 Pandas 如何实现。
df1:
name id
0 Rose N0002
1 Nimo N0003
df2:
code
0 S1
1 S2
2 S3
df1 + df2 = :
name id code
0 Rose N0002 S1
1 Nimo N0003 S1
2 Rose N0002 S2
3 Nimo N0003 S2
4 Rose N0002 S3
5 Nimo N0003 S3
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
可以使用 Pandas 中的 merge 函数来实现两个 DataFrame 的合并,具体操作如下:
import pandas as pd
# 创建 df1 和 df2
df1 = pd.DataFrame({'name': ['Rose', 'Nimo'], 'id': ['N0002', 'N0003']})
df2 = pd.DataFrame({'code': ['S1', 'S2', 'S3']})
# 将 df1 和 df2 按列合并
result = pd.merge(df1.assign(key=0), df2.assign(key=0), on='key').drop('key', axis=1)
# 输出合并后的结果
print(result)
运行结果如下:
name id code
0 Rose N0002 S1
1 Rose N0002 S2
2 Rose N0002 S3
3 Nimo N0003 S1
4 Nimo N0003 S2
5 Nimo N0003 S3
这里,我们首先使用 assign
函数为每个 DataFrame 添加一个 key 列,然后使用 merge 函数将两个 DataFrame 按照 key 列进行合并,最后再将 key 列删除即可得到结果。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
可用
import pandas as pd
df1 = pd.DataFrame({'name': ['Rose', 'Nimo'], 'id': ['N0002', 'N0003']})
df2 = pd.DataFrame({'code': ['S1', 'S2', 'S3']})
df1['key'] = 0
df2['key'] = 0
result = pd.merge(df1, df2, on='key').drop('key', axis=1)
print(result);
df = pd.read_csv('data/tgnb_merge.csv', encoding='utf-8')
# df.drop_duplicates(keep='first', inplace=True) # 去重,只保留第一次出现的样本
df = df.sample(frac=1.0) # 全部打乱
cut_idx = int(round(0.1 * df.shape[0]))
df_test, df_train = df.iloc[:cut_idx], df.iloc[cut_idx:]
print df.shape, df_test.shape, df_train.shape # (3184, 12) (318, 12) (2866, 12)