如何将两个for循环列表添加到一个?



所以,我用for循环创建了两个列表,但我不知道如何将它们加在一起。

def month_changed(cls):
df = pd.read_excel("income.xlsx")
df1 = df.iloc[:13].values
for x in range(12):
try:
df2 = sum(int(i) for i in df1[x, 1:])
mylist = [df2]
print(mylist)
except ValueError:
print("cannot convert float NaN to integer")

输出:[21288] [21445]

期望输出:[21288,21445]

任何想法?

这比遍历列表要容易得多。在pd.read_csv之后已经有了df1数据帧。


df1['sum'] = df1[df1.columns[1:]].sum(axis=1)
# 'sum' will be new column
# df1[df1.columns[1:]] will skip the first column
# sum(axis=1) will add all values together along the axis (horizontally)
# df1['sum'] is a pd.Series, if you want a list just do:
result_list = df1['sum'].tolist()
print(result_list)
e.g [1,23,35,57]
#since you have 13 rows, this list should have 13 elements

编辑:只是为了向您展示如何使您的代码工作,只有一点更改。我创建了一个小的测试数据框架。

df = pd.DataFrame(
{'dummy': {0: 0, 1: 1, 2: 2, 3: 3},
'col1': {0: 1.0, 1: 1.0, 2: 3.2, 3: 3.0},
'col2': {0: 2.4, 1: 3.0, 2: 4.5, 3: 7.0},
'col3': {0: 12.3, 1: 11.0, 2: 1.7, 3: 3.3}})
result_sum1, result_sum2, result_sum3 = [], [], []
for x in range(len(df)):
try:
# 2 examples how you get your sum
row_sum1 = sum(int(i) for i in df.iloc[x, 1:])
row_sum2 = sum(map(int, df.iloc[x, 1:]))

# if you leave it with floats just do:
row_sum3 = sum(df.iloc[x, 1:])

result_sum1.append(row_sum1)
result_sum2.append(row_sum2)
result_sum3.append(row_sum3)
except ValueError:
print("cannot convert float NaN to integer")

print(f"1: {result_sum1}")
print(f"2: {result_sum2}")
print(f"3: {result_sum3}")
[15, 15, 8, 13]
[15, 15, 8, 13]
[15.700000000000001, 15.0, 9.4, 13.3]

最新更新