使用itterrows将行添加到熊猫df

时间:2020-08-30 19:15:42

标签: python pandas

我有以下熊猫datframe

1

我希望为每个国家/地区创建与其年限一样多的行。 例如,美国将有201行,加拿大将有95行,等等。

我想做类似的事情:

for row in df.iterrows():
    for range(row['styear'], row['endyear']):
        df.append(row)

有什么想法可以使这项工作成功吗?

1 个答案:

答案 0 :(得分:0)

您可以使用年份的range创建一个新列,然后explode创建该列

# sample dataframe
df = pd.DataFrame({
    'country': ['United States', 'Canada', 'Bahamas', 'Cuba'],
    'styear': [1816, 1920, 1973, 1902],
    'endyear': [2016, 2016, 2016, 1906]
})


df['allyears'] = [range(start, end+1)
    for start, end in zip(df.styear, df.endyear)]
df = df.explode('allyears')
print(df)

输出

          country  styear  endyear allyears
0   United States    1816     2016     1816
0   United States    1816     2016     1817
0   United States    1816     2016     1818
0   United States    1816     2016     1819
0   United States    1816     2016     1820
..            ...     ...      ...      ...
3            Cuba    1902     1906     1902
3            Cuba    1902     1906     1903
3            Cuba    1902     1906     1904
3            Cuba    1902     1906     1905
3            Cuba    1902     1906     1906

[347 rows x 4 columns]