dataframe 同行合并
时间: 2023-09-07 07:17:27 浏览: 192
在pandas中,可以使用`merge`函数将两个或多个DataFrame中具有相同值的列合并为一个DataFrame。以下是一个示例:
假设有两个DataFrame:df1和df2,它们都有一个名为“name”的列。
``` python
import pandas as pd
df1 = pd.DataFrame({'name': ['Tom', 'Jerry', 'Mickey'], 'age': [25, 30, 35]})
df2 = pd.DataFrame({'name': ['Tom', 'Jerry', 'Donald'], 'gender': ['M', 'M', 'M']})
```
现在,我们要将这两个DataFrame中具有相同“name”值的行合并为一个DataFrame。我们可以使用以下代码:
``` python
merged_df = pd.merge(df1, df2, on='name')
```
结果为:
``` python
name age gender
0 Tom 25 M
1 Jerry 30 M
```
`merge`函数的参数说明:
- `df1`和`df2`:要合并的两个DataFrame;
- `on`:用于合并的列名;
- `how`:指定合并方式,包括“left”、“right”、“inner”和“outer”;
- `suffixes`:用于重命名重复列的后缀。
相关问题
怎么将两个不同行名称的dataframe竖向合并
可以使用 pandas 库中的 concat 函数来将两个不同行名称的数据框竖向合并。具体操作可以参考下面的代码:
import pandas as pd
# 创建两个数据框 df1 和 df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
# 使用 concat 函数将两个数据框竖向合并
merged_df = pd.concat([df1, df2], axis=0)
# 打印合并后的数据框
print(merged_df)
输出结果为:
A B C D
0 1 4 NaN NaN
1 2 5 NaN NaN
2 3 6 NaN NaN
0 NaN NaN 7.0 10.0
1 NaN NaN 8.0 11.0
2 NaN NaN 9.0 12.0
注意,这里的竖向合并是将两个数据框按行方向拼接起来,因此在合并后的数据框中会出现 NaN 值。如果需要去掉 NaN 值可以使用 dropna 函数。
dataframe共有五列,如何将其拆分为不同行,及第1,2,3列为一行,第1,4,5列为一行并合并第一列中相同的元素
您可以使用 pandas 的 groupby 和 apply 方法来实现该操作。
假设您的 DataFrame 名称为 df,您可以按照第一列的元素进行分组,然后将每个组的第 1、2、3 列合并为一个字符串,第 1、4、5 列合并为一个字符串,最后将两个字符串合并为一行,代码如下:
```
import pandas as pd
# 按照第一列元素进行分组,然后将每个组的第1、2、3列合并为一个字符串,第1、4、5列合并为一个字符串,最后将两个字符串合并为一行
result_df = df.groupby(df.iloc[:, 0]).apply(lambda x: pd.Series({
'col1_2_3': ' '.join(x.iloc[:, :3].astype(str).values.tolist()[0]),
'col1_4_5': ' '.join(x.iloc[:, [0, 3, 4]].astype(str).values.tolist()[0])
})).reset_index()
# 将 col1_2_3 和 col1_4_5 合并为一列
result_df['result'] = result_df['col1_2_3'] + ' ' + result_df['col1_4_5']
# 删除 col1_2_3 和 col1_4_5 列
result_df = result_df.drop(['col1_2_3', 'col1_4_5'], axis=1)
# 输出结果
print(result_df)
```
其中,`df.iloc[:, 0]` 表示选取第一列的所有元素进行分组,`x.iloc[:, :3]` 表示选取每个组的第 1、2、3 列,`x.iloc[:, [0, 3, 4]]` 表示选取每个组的第 1、4、5 列。最后将两个字符串合并为一行,并将结果保存在 `result_df` 中。
阅读全文