我怎样才能确保美国的每个州都在Pandas数据框中被记录下来?

kt06eoxx  于 2023-03-16  发布在  其他
关注(0)|答案(2)|浏览(153)

我对Pandas很陌生
我有一个CSV,它包含43个状态和在该状态下发生了多少次的计数。

STATE,Count
AL,1
AK,4
AZ,7

我的CSV不包含每个状态,我如何确保每个状态都被考虑在内?如果它不在原始 Dataframe 中,它的Count应该为0。
这是我到目前为止所拥有的,但它给了我Count_xCount_y,它仍然没有得到所有50个州。

# Original CSV only has 43 states
states = pd.read_csv("states.csv")

# Create a new dataframe with all states and count set to 0
all_states = [["AL", 0], ["AK", 0], ["AZ", 0], ["AR", 0], ["CA", 0], ["CO", 0], ["CT", 0], ["DE", 0], ["FL", 0], ["GA", 0], ["HI", 0], ["ID", 0], ["IL", 0], ["IN", 0], ["IA", 0], ["KS", 0], ["KY", 0], ["LA", 0], ["ME", 0], ["MD", 0], ["MA", 0], ["MI", 0], ["MN", 0], ["MS", 0], ["MO", 0], ["MT", 0], ["NE", 0], ["NV", 0], ["NH", 0], ["NJ", 0], ["NM", 0], ["NY", 0], ["NC", 0], ["ND", 0], ["OH", 0], ["OK", 0], ["OR", 0], ["PA", 0], ["RI", 0], ["SC", 0], ["SD", 0], ["TN", 0], ["TX", 0], ["UT", 0], ["VT", 0], ["VA", 0], ["WA", 0], ["WV", 0], ["WI", 0], ["WY", 0]]
all_states = pd.DataFrame(all_states, columns=["STATE", "Count"])

# Merge the two Dataframes
new_df = states.merge(all_states, on="STATE")

# Still only has 43 states
new_df

请注意,AK仍然缺失(以及其他一些状态)

vsdwdz23

vsdwdz231#

你在错误的方向上合并;您需要将statesall_states合并,而不是相反。使用leftmerge,然后使用fillna0

new_df = all_states.merge(states, on='STATE', how='left').fillna(0)

注意,您可以决定去掉Count_x列,因为它将全部是0;你可以用drop来实现这个功能:

new_df.drop('Count_x', axis=1, inplace=True)
aiazj4mn

aiazj4mn2#

您可以尝试重新建立索引:

df.set_index('STATE').reindex(list(zip(*all_states))[0],fill_value = 0).reset_index()

相关问题