python两行合并,python pandas将两行或更多行文本合并为一行

I have data frame with text data like below,

name | address | number

1 Bob bob No.56

2 @gmail.com

3 Carly carly@world.com No.90

4 Gorge greg@yahoo

5 .com

6 No.100

and want to make it like this frame.

name | address | number

1 Bob bob@gmail.com No.56

2 Carly carly@world.com No.90

3 Gorge greg@yahoo.com No.100

I am using pandas to read file but not sure how to use merge or concat.

解决方案

In case of name column consists of unique values,

print df

name address number

0 Bob bob No.56

1 NaN @gmail.com NaN

2 Carly carly@world.com No.90

3 Gorge greg@yahoo NaN

4 NaN .com NaN

5 NaN NaN No.100

df['name'] = df['name'].ffill()

print df.fillna('').groupby(['name'], as_index=False).sum()

name address number

0 Bob bob@gmail.com No.56

1 Carly carly@world.com No.90

2 Gorge greg@yahoo.com No.100

you may need ffill(), bfill(), [::-1], .groupby('name').apply(lambda x: ' '.join(x['address'])), strip(), lstrip(), rstrip(), replace() kind of thing to extend above code to more complicated data.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 答:下面是一个将某列值相同的行合并一行python示例:import pandas as pd# 创建一个数据框 df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8), 'D': np.random.randn(8)})# 将某列值相同的行合并一行 df.groupby('A').sum() ### 回答2: 在Python中,可以通过使用pandas库来将某列值相同的行合并一行。下面以一个示例来说明: 假设我们有一个包含姓名、年龄和城市的数据集,现在我们希望将所有城市相同的行合并一行,并计算每个城市的平均年龄。 首先,我们需要导入pandas库: ```python import pandas as pd ``` 接下来,我们创建一个包含数据的DataFrame: ```python data = {'姓名': ['张三', '李四', '王五', '赵六', '小明', '小红'], '年龄': [21, 30, 25, 35, 28, 22], '城市': ['北京', '上海', '北京', '上海', '北京', '上海']} df = pd.DataFrame(data) ``` DataFrame的内容如下: ``` 姓名 年龄 城市 0 张三 21 北京 1 李四 30 上海 2 王五 25 北京 3 赵六 35 上海 4 小明 28 北京 5 小红 22 上海 ``` 使用`groupby`函数将城市相同的行分组,并使用`agg`函数计算每个分组的平均年龄: ```python result = df.groupby('城市').agg({'年龄': 'mean'}).reset_index() ``` `reset_index()`函数用于重新设置索引,得到的结果如下: ``` 城市 年龄 0 上海 29.0 1 北京 24.6 ``` 结果中的每一行代表一个城市和该城市的平均年龄。可以看到,上海的平均年龄为29岁,北京的平均年龄为24.6岁。 这样,我们就成功地将某列值相同的行合并一行,并计算了每个城市的平均年龄。 ### 回答3: 假设我们有如下的示例数据集: | 序号 | 名字 | 年龄 | 性别 | | --- | --- | --- | --- | | 1 | 小明 | 18 | 男 | | 2 | 小红 | 20 | 女 | | 3 | 小刚 | 18 | 男 | | 4 | 小丽 | 20 | 女 | 现在我们想将年龄相同的行合并一行。使用Python中的pandas库可以轻松完成这个任务。 首先,我们需要导入pandas库并读取数据集: ``` import pandas as pd data = pd.read_csv("data.csv") # 读取数据集 ``` 读取之后,我们可以使用`groupby`函数根据某一列进行分组,并使用`agg`函数对其他列应用聚合函数。在这个例子中,我们使用`agg`函数对"名字"和"性别"列应用`" ".join`函数来将相同年龄的行合并为一个字符串: ``` result = data.groupby("年龄").agg({"名字": " ".join, "性别": " ".join}).reset_index() ``` 最后,我们可以使用`reset_index`函数重置索引,并将结果保存为一个新的数据集: ``` result.to_csv("result.csv", index=False) # 保存结果数据集 ``` 运行以上代码后,我们得到了如下的结果数据集: | 年龄 | 名字 | 性别 | | --- | --- | --- | | 18 | 小明 小刚 | 男 男 | | 20 | 小红 小丽 | 女 女 | 可以看到,年龄相同的行已经被成功合并为了一行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值