Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从合并的数据库联接列_Python_Pandas_Dataframe_Data Analysis_Sensors - Fatal编程技术网

Python 从合并的数据库联接列

Python 从合并的数据库联接列,python,pandas,dataframe,data-analysis,sensors,Python,Pandas,Dataframe,Data Analysis,Sensors,我想在一个数据帧中添加两列。数据帧是两个单个数据帧的结果。代码如下 df1 = pd.read_csv("acc.csv") df2 = pd.read_csv("gyr.csv") df = pd.merge(df1, df2, right_index=True, left_index=True) 我有id列,activity列,time列,accx列,accy列,accz列,id列,activity列,time列,gurx列,gury列,gurz列 所以我想在现有列的基础上添加一个新列

我想在一个数据帧中添加两列。数据帧是两个单个数据帧的结果。代码如下

df1 = pd.read_csv("acc.csv")
df2 = pd.read_csv("gyr.csv")

df = pd.merge(df1, df2, right_index=True, left_index=True)
我有id列,activity列,time列,accx列,accy列,accz列,id列,activity列,time列,gurx列,gury列,gurz列

所以我想在现有列的基础上添加一个新列(参见DATA.HEAD),它是activity\u gur和activity的总和。因此,在数据头的右侧将添加一个名为activities的新列。例如,该列将具有向下攀爬活动,如25281+25786=51067。因此,在“活动”列的第0行,将描述活动向下爬升所需的行数。其他活动也是如此。当我编写df[“activities”].value_counts()代码时,它将返回类似于上面的内容。之后,我将退出activity_gur和activity列

我尝试了以下方法:

df1 = pd.DataFrame({'activity': 32833, 31924, 31793, 31229, 30429, 26938, 25281, 4232],
                       'activity_gur': [33267, 32546, 31912, 31822, 30958, 25786, 18343, 4312]})

df['activityfinal']=df1.activity + df1.activity_gur
但结果列只是附加值,我不知道每个活动的总和

你能帮我吗?

用熊猫

像这样,

new_data = activity.append(activity_gur, ignore_index=True)
试试这个

X = df["activity"].value_counts()
Y = df["activity_gur"].value_counts()
RESULT = pd.DataFrame(X + Y, columns=['TOTAL'])
然后更新现有数据帧:

df["TOTAL"] = df["activity"].apply(lambda x: RESULT["TOTAL"].loc[x])
完成上述步骤后,删除以下列:

df = df.drop(["activity", "activity_gur"], axis=1)
测试数据: 第一个值\u统计对象: 输出:

第二个值为对象计数: 输出:

最终数据帧: 输出:


然后,您可以删除
activity
activity\u gur
列,并根据需要重命名
sum
列。

activity-activity\u gur攀爬楠楠楠楠楠攀爬楠楠楠楠楠楠跳跃楠楠楠楠楠躺楠楠跑步楠楠楠楠坐楠楠楠楠楠楠站楠楠楠楠楠楠楠楠楠步行。a还想将新列附加到现有的dataframei中,我发现您的列名不同,这就是NAN的原因。我已经更新了答案,请尝试一下。是的,我尝试一下,这似乎有效。但请看我的数据头链接。正如您所看到的,第一个活动是攀爬向下,此活动将持续25281列,然后开始其他活动。因此,新列必须具有两列的附加值,但格式与原始列相同,现在我使用类似于accx accy accz gurx gury gurz总计0-9.66420-1.65067 0.859924-0.000977-0.004135-0.002487 51067I的内容,而不是51067来显示活动(在本例中,向上爬)当我调用granning_down来查看其值时,我希望在将要删除的列中显示活动的名称(活动,gyr_活动)id活动时间accx accy accz id gyr_活动时间gurx gyr_总计0 1爬升1.436000e+12-9.66420-1.65067 0.859924 1爬升1.436000e+12-0.000977-0.004135-0.002487 51067感谢您的回答df_final=df_final.drop(['activity',gyr_activity',],axis=1)。复制()df_final.head()当我写df_final[“sum”].value_counts().sort_index()时,我得到了8544 1 45281 1 51067 1 57992 1 61387 1 63051 1 64470 1 66100 1 Name:sum,dtype:int64我不知道每个值是从哪个活动派生出来的。我希望每个活动都有相应的值作为我的数据。head link还有一件事,请使用您的代码,sum列没有添加到我的原始df数据框架中,您如何想象?你能给我看看你期望的结果吗?id活动时间accx accy accz id活动时间gur gur gur gur gur gur sum活动0 1爬升1.44E+12-9.6642-1.65067 0.859924 1爬升1.44E+12-0.000977-0.004135-0.002487爬升,因为爬升是活动和活动之和,它将达到51067行,以此类推其他活动。最后,我将退出活动和活动专栏
df = df.drop(["activity", "activity_gur"], axis=1)
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'activity' : np.random.choice( ['sitting', 'standing', 'lying', 'running', 'climbing_up', 'walking', 'climbing_down', 'jumping'], 10000),
    'activity_gur' : np.random.choice( ['sitting', 'standing', 'lying', 'running', 'climbing_up', 'walking', 'climbing_down', 'jumping'], 10000)})
activity_value_counts = df["activity"].value_counts().sort_index()
activity_value_counts
climbing_down    1222
climbing_up      1248
jumping          1274
lying            1193
running          1277
sitting          1283
standing         1227
walking          1276
Name: activity, dtype: int64
activity_gur_value_counts = df["activity_gur"].value_counts().sort_index()
activity_gur_value_counts
climbing_down    1238
climbing_up      1274
jumping          1236
lying            1262
running          1220
sitting          1259
standing         1247
walking          1264
Name: activity_gur, dtype: int64
df_final = pd.DataFrame({'activity':activity_value_counts})
df_final['activity_gur'] = activity_gur_value_counts
df_final['sum'] = df_final['activity'] + df_final['activity_gur']
df_final