gpt4 book ai didi

python - pandas:列格式问题导致合并问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:56 26 4
gpt4 key购买 nike

我有以下两个数据库:

url='https://raw.githubusercontent.com/108michael/ms_thesis/master/rgdp_catcode.merge'

df=pd.read_csv(url, index_col=0)
df.head(1)

naics catcode GeoName Description ComponentName year GDP state
0 22 E1600',\t'E1620',\t'A4000',\t'E5000',\t'E3000'... Alabama Utilities Real GDP by state 2004 5205 AL

url='https://raw.githubusercontent.com/108michael/ms_thesis/master/mpl.Bspons.merge'
df1=pd.read_csv(url, index_col=0)

df1.head(1)
state year unemployment log_diff_unemployment id.thomas party type date bills id.fec years_exp session name disposition catcode
0 AK 2006 6.6 -0.044452 1440 Republican sen 2006-05-01 s2686-109 S2AK00010 39 109 National Cable & Telecommunications Association support C4500

关于 df,我必须手动输入 catcode 值。我认为这就是格式化关闭的原因。我想要的只是拥有不带 \t 前缀的值。我想合并 catcode、state、year 上的 dfs。我之前进行了一项测试,其中每个单元格只有一个值的 df1.catcode 与每个单元格具有多个值的另一个 df.catcode 中的值相匹配,并且它工作了。

所以从技术上讲,我需要做的就是丢失 df.catcode 中每个连续值之前的 \t ,但此外,如果有人曾经合并过在此之前,任何通过经验学到的“警告”都会受到赞赏。我的合并代码如下所示:

mplmerge=pd.merge(df1,df, on=(['catcode', 'state', 'year']), how='left' )

我认为这可以通过正则表达式方法来完成,我现在正在查看文档。

最佳答案

清理 df 中的 catcode 列相当简单:

catcode_fixed = df.catcode.str.findall('[A-Z][0-9]{4}')

这将产生一个系列,每行都有一个猫代码列表:

catcode_fixed.head(3)
Out[195]:
0 [E1600, E1620, A4000, E5000, E3000, E1000]
1 [X3000, X3200, L1400, H6000, X5000]
2 [X3000, X3200, L1400, H6000, X5000]
Name: catcode, dtype: object

如果我正确理解你想要什么,那么你需要“取消组合”这些列表。 Here简而言之,这就是窍门:

catcode_fixed = catcode_fixed = catcode_fixed.apply(pd.Series).stack()
catcode_fixed.index = catcode_fixed.index.droplevel(-1)

所以,我们有(注意索引值):

catcode_fixed.head(12)
Out[206]:
0 E1600
0 E1620
0 A4000
0 E5000
0 E3000
0 E1000
1 X3000
1 X3200
1 L1400
1 H6000
1 X5000
2 X3000
dtype: object

现在,删除旧的catcode并加入新的:

df.drop('catcode',axis = 1, inplace = True)
catcode_fixed.name = 'catcode'
df = df.join(catcode_fixed)

顺便说一句,合并数据框时您可能还需要使用df1.reset_index()

关于python - pandas:列格式问题导致合并问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36896968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com