我有一个非常大的数据帧,我想要操纵其中的一部分.实际上,我只有一列数据(称为‘refix_list’),其中每个单元格都包含一个用逗号分隔的数字字符串.我有一个由三部分组成的问题.我在试着
-
(1)将这些字符串连接到一个名为 ‘UPDATED_REFIX_LIST’,按列‘RECORING_SESSION_LABEL’分组 和"审判",这样我就可以
-
(2)删除字符串中的重复和空白(逐行), 然后
-
(3)对字符串中的结果元素进行计数.
到目前为止,第一步对我来说是有效的,尽管我不确定我是不是以最好的方式来做这件事--我在这里还是个新手,但我们正在努力!以下是我执行此操作的代码:
# Function to concatenate strings into a single string
def concat_strings(group):
return ', '.join(group)
# Grouping and concatenating 'REFIX_LIST' into a single string for each group (Pandas series)
df1['UPDATED_REFIX_LIST'] = df1.groupby(['RECORDING_SESSION_LABEL', 'trial'])['REFIX_LIST'].transform(concat_strings)
第二步是我被困住的地方.我try 了很多东西(太多了,无法列出,老实说,我甚至不确定它们都应该如何工作),但我还没有成功地删除新字符串中的重复项和空白(S).*我认为我的问题的一部分是,我try 过的任何代码都在寻找删除较大字符串中的重复字符串,而不仅仅是从较大字符串中作为一个整体删除重复数字.这可能是我上面的代码以及我如何处理这一点的结果,但不确定.
第三步我还没能try ,因为我还不能让第二步开始.
以下是一些示例数据/代码和预期输出.当我阅读CSV文件时,下面的代码准确地表示了我到目前为止所拥有的内容.
import pandas as pd
# Define the data for DF1
data_df1 = {
'RECORDING_SESSION_LABEL': [101, 101, 101, 101, 102, 102],
'trial': [1, 1, 1, 2, 1, 2],
'CURRENT_FIX_INDEX': [1, 2, 3, 4, 1, 2],
'REFIX_LIST': ['', '7,8,10', '7,8', '6,4', '1,2', '1,3,4'],
'UPDATED_REFIX_LIST': [',7,8,10,7,8', ',7,8,10,7,8', ',7,8,10,7,8', '6,4', '1,2,1,3,4', '1,2,1,3,4']
}
# Create DF1
df1 = pd.DataFrame(data_df1)
#print
print(df1)
这是我正在导入的CSV文件和上面的第一段代码之间的数据当前的样子.我需要做的是让我的数据在删除重复项和空白后看起来像这样(同样,逐行删除).(我在这里使用DF2只是为了分离,但这仍然是DF1):
# Define the data for DF2
data_df2 = {
'RECORDING_SESSION_LABEL': [101, 101, 101, 101, 102, 102],
'trial': [1, 1, 1, 2, 1, 2],
'CURRENT_FIX_INDEX': [1, 2, 3, 4, 1, 2],
'REFIX_LIST': ['', '7,8,10', '7,8', '6,4', '1,2', '1,3,4'],
'UPDATED_REFIX_LIST': ['7,8,10', '7,8,10', '7,8,10', '6,4', '1,2,3,4', '1,2,3,4']
}
# Create DF2
df2 = pd.DataFrame(data_df2)
#print
print(df2)
最后,我需要对‘UPDATED_REFIX_LIST’列中的结果元素进行计数,并创建一个名为‘UPDATED_REFIX_COUNT’的新列.最终输出应如下所示(仍为DF1格式):
# Define the data for DF3
data_df3 = {
'RECORDING_SESSION_LABEL': [101, 101, 101, 101, 102, 102],
'trial': [1, 1, 1, 2, 1, 2],
'CURRENT_FIX_INDEX': [1, 2, 3, 4, 1, 2],
'REFIX_LIST': ['', '7,8,10', '7,8', '6,4', '1,2', '1,3,4'],
'UPDATED_REFIX_LIST': ['7,8,10', '7,8,10', '7,8,10', '6,4', '1,2,3,4', '1,2,3,4'],
'UPDATED_REFIX_COUNT': [3, 3, 3, 2, 4, 4]
}
# Create DF3
df3 = pd.DataFrame(data_df3)
print(df3)
任何帮助都非常感谢!!非常感谢!