如何使用python、pandas修改数据系列的每个元素(将字符串数据列表修改为单个字符串)?
如何更改数据系列中的每个数据,让我详细解释一下。 我有一个板球比赛数据集,我想从整个数据集中找出两支球队相互比赛的次数如何使用python、pandas修改数据系列的每个元素(将字符串数据列表修改为单个字符串)?,python,pandas,Python,Pandas,如何更改数据系列中的每个数据,让我详细解释一下。 我有一个板球比赛数据集,我想从整个数据集中找出两支球队相互比赛的次数 team_names total_count ['Afghanistan','Bangladesh'] 1 我得到的结果是“阿富汗”和“孟加拉国”各打了一场。但这里我想修改这个数据框。我不想显示['Afghanistan'、'Bangladesh'],而是想显示如下数据: team_names to
team_names total_count
['Afghanistan','Bangladesh'] 1
我得到的结果是“阿富汗”和“孟加拉国”各打了一场。但这里我想修改这个数据框。我不想显示['Afghanistan'、'Bangladesh'],而是想显示如下数据:
team_names total_count
'Afghanistan-Bangladesh' 1
如何做到这一点
(我试过:
1) df["team_names1"] = df['team_names'].str.join("-")
2) df['team_names1'] = df['team_names'].apply(lambda x: '-'.join(x))
3) df['team_names1'] = df['team_names'].apply(lambda x: '-'.join(x),1)
但它们都没有给我正确的输出。以上所有代码都产生相同的输出:
team_names total_count
[-'-A-f-g-h-a-n-i-s-t-a-n-'-,- -'-B-a-n-g-l-a-..] 1
如果团队名称的值是字符串列表,请使用:
df["team_names"] = df.team_names.str.join("-")
结果:
team_names total_count
0 Afghanistan-Bangladesh 1
team_names total_count
0 Afghanistan-Bangladesh 1
如果这些值实际上是字符串文字,那么最好的选择是首先使用ast.literal\u eval
将它们转换为所需的数据类型(字符串列表):
import ast
df["team_names"] = df.team_names.apply(ast.literal_eval)
df["team_names"] = df.team_names.str.join("-")
结果:
team_names total_count
0 Afghanistan-Bangladesh 1
team_names total_count
0 Afghanistan-Bangladesh 1
编辑:为了清晰起见,我重新创建了数据框
df = pd.DataFrame({'team_names' : [['Afghanistan','Bangladesh'], ['Afghanistan','England']], 'total_count': [1,2] })
df['team_names'] = df['team_names'].apply(lambda x: str(x))
df
输出:
team_names total_count
0 ['Afghanistan', 'Bangladesh'] 1
1 ['Afghanistan', 'England'] 2
team_names total_count
0 Afghanistan-Bangladesh 1
1 Afghanistan-England 2
注意!列“团队名称”与列表中的list
相似,但实际上它们是string
。若要将相似的字符串转换回列表,请使用eval()
输出:
team_names total_count
0 ['Afghanistan', 'Bangladesh'] 1
1 ['Afghanistan', 'England'] 2
team_names total_count
0 Afghanistan-Bangladesh 1
1 Afghanistan-England 2
使用
df['team_names']=df['team_names'].apply(lambda x:'-'.join(x),1)
我已经尝试过了,但是很抱歉它不起作用。错误消息是什么?它将完整的列表分开,如[-'-A-f-g-h-A-n-I-s-t-A-n-'-'-B-A-n-g-l-A-…]修改后的解决方案您也可以使用eval()
@Gaurav,我已经修改了解决方案谢谢@Black Raven它能用。@GauravSurana,你能帮我把我的答案标记为正确答案吗?