我有以下熊猫datframe
我希望为每个国家/地区创建与其年限一样多的行。 例如,美国将有201行,加拿大将有95行,等等。
我想做类似的事情:
for row in df.iterrows():
for range(row['styear'], row['endyear']):
df.append(row)
有什么想法可以使这项工作成功吗?
答案 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]