我使用了新的数据框 df_all
classA classB year1 count1 docID1 year2 count2 doc2
0 A8 B1 1972 1 0 1973 3 U015|U348|U768
1 A8 B2 1972 2 U157|U596 1973 0 0
2 A8 B3 1972 0 0 1973 1 U124
我将docID1和docID2合并到了新列中,
df_all['all_doc']=df_all['docID1'].astype(str)+'|'+df_all['docID2'].astype(str)
classA classB year1 count1 docID1 year2 count2 doc2 all_doc
0 A8 B1 1972 1 0 1973 3 U015|U348|U768 ||U015|U348|U768
1 A8 B2 1972 2 U157|U596 1973 0 0 U157|U596|0
2 A8 B3 1972 0 0 1973 1 U124 ||U124
在'all_doc'
列中有重复的“ |”在每一行中。我想知道如何删除重复的“ |”每行
我希望看到这样的结果
|U015|U348|U768
|U124
先谢谢您
答案 0 :(得分:0)
给予
>>> df = pd.DataFrame([['foo', '||U015|U348|U768'], ['bar', 'U157|U596|0'], ['baz', '||U124']], columns=['fiz', 'all_doc'])
>>> df
fiz all_doc
0 foo ||U015|U348|U768
1 bar U157|U596|0
2 baz ||U124
您可以发布
>>> df['all_doc'] = df['all_doc'].str.replace('\|+', '|')
>>> df
fiz all_doc
0 foo |U015|U348|U768
1 bar U157|U596|0
2 baz |U124
正则表达式\|+
指定|
个字符的序列。这些序列中的每一个都由单个|
代替。
答案 1 :(得分:0)
filter
+ replace
+ sum
您可以按标签过滤适当的列,用空字符串替换0
,然后求和:
df = pd.DataFrame({'docID1': [0, 'U157|U596', 0],
'doc2': ['U015|U348|U768', 0, 'U124']})
df['all_doc'] = '|' + df.filter(regex='^doc').replace(0, '').sum(1)
print(df)
docID1 doc2 all_doc
0 0 U015|U348|U768 |U015|U348|U768
1 U157|U596 0 |U157|U596
2 0 U124 |U124