我有两个现有的数据帧,我将其命名为death和air:
County,Death Rate
Autauga,859
Baldwin,976
County,AQI
Baldwin,51
Clay,45
这些数据集来自不同的来源,具有不同的长度,相同的县不会出现在每个数据帧中
当County的值匹配时,我需要创建第三个数据框,其中只包含列AQI和死亡率
以下是我开始的内容(死亡是更大的df):
import pandas as pd
death = pd.read_csv('SimpleDeath1.csv')
air = pd.read_csv('simpleAir.csv')
data = pd.DataFrame(columns= ['AQI', 'Death Rate'], index=None)
for i in range (0, death.size):
if death['County'] == air['County']:
data.append({'AQI' : air['AQI'], 'Death Rate' : death['Death Rate']})
这将输出以下错误:
ValueError: Can only compare identically-labeled Series objects
已经被广泛询问和讨论过了。在搜索此特定错误时,实际上返回了382个问题,虽然我还没有全部阅读,但我已经阅读了足够多的内容,怀疑我最初解决此问题的方法的效率。
Somehighlights从我到目前为止读到的
有人能帮助我更好地解决这个问题吗
我尝试过的一些事情:
更改比较:
如果死亡['County')。等于(空气['County'):
不会抛出错误,但我的新数据帧为空
将数据帧值转换为字符串:
如果死亡['County'].str()==air['County'].str()): data.append({'AQI':air['AQI'],'Death Rate':Death['Death Rate']})
抛出:
TypeError: 'StringMethods' object is not callable
任何使用数据帧或其他策略的帮助都将不胜感激
在这种情况下,您可以从以下位置使用合并功能:
这将产生:
on='County'定义包含合并操作中使用的键的列
how='inner'告诉代码仅选择两个数据帧中基于上述“country”列的键
然后可以使用pandas的drop函数删除不需要的“country”列
相关问题 更多 >
编程相关推荐