我正在使用Pandas DataFrame提取文件并将转换应用于某些列。在这里,我想每5-10行调用/使用一个名为func2的函数。
import pandas as pd
input_df = pd.read_csv('input.csv', dtype=str)
csv_input = input_df
csv_input['acct1'] = input_df['acct1'].apply(lambda x: func1(x)[1])
csv_input.to_csv('input.csv', index=False)
我正在尝试使用for循环并使用i%5,但它没有给出预期的结果,请提出任何建议?
答案 0 :(得分:1)
尝试
length = len(input_df)
list1 = [j for i in range(0, length, 10) for j in range(i, length if i + 5 >= length else i + 5)]
list2 = list(set(range(0, length)) - set(list1))
print(list1)
print(list2)
input_df.loc[list1, 'acct1'] = input_df.loc[list1, 'acct1'].apply(lambda x: func1(x)[1])
input_df.loc[list2, 'acct1'] = input_df.loc[list2, 'acct1'].apply(lambda x: func2(x)[1])
例如,如果我的长度是82,那么输出将是
[0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 30, 31, 32, 33, 34, 40, 41, 42, 43, 44, 50, 51, 52, 53, 54, 60, 61, 62, 63, 64, 70, 71, 72, 73, 74, 80, 81]
[5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 25, 26, 27, 28, 29, 35, 36, 37, 38, 39, 45, 46, 47, 48, 49, 55, 56, 57, 58, 59, 65, 66, 67, 68, 69, 75, 76, 77, 78, 79]