Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 3.x 创建dataframe,其中每行由另一个dataframe的列名和值组成_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 创建dataframe,其中每行由另一个dataframe的列名和值组成

Python 3.x 创建dataframe,其中每行由另一个dataframe的列名和值组成,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我编写了以下代码: df = pd.read_csv('breast-cancer-wisconsin.data.csv', nrows= 300) columns_df = pd.DataFrame(columns = ['column_name', 'value']) columns = df.columns.values for index, row in df.iterrows(): for column in columns: columns_df = colu

我编写了以下代码:

df = pd.read_csv('breast-cancer-wisconsin.data.csv', nrows= 300)
columns_df = pd.DataFrame(columns = ['column_name', 'value'])
columns = df.columns.values
for index, row in df.iterrows():
    for column in columns:
        columns_df = columns_df.append({'column_name': column, 'value': row[column]}, ignore_index=True)
此脚本将csv文件读取到数据帧,然后将每个列名及其对应的值附加到新的数据帧。如果我跑

print(columns_df[-10:])
我得到以下输出

                 column_name   value
2300         clump_thickness       5
2301          unif_cell_size       5
2302         unif_cell_shape       7
2303           marg_adhesion       8
2304  single_epith_cell_size       6
2305             bare_nuclei      10
2306             bland_chrom       7
2307           norm_nucleoli       4
2308                 mitoses       1
2309                   class       4
2310         clump_thickness       5
2311          unif_cell_size       3
2312         unif_cell_shape       4
2313           marg_adhesion       3
2314  single_epith_cell_size       4
2315             bare_nuclei       5
2316             bland_chrom       4
2317           norm_nucleoli       7
2318                 mitoses       1
2319                   class       2
2320         clump_thickness       5
2321          unif_cell_size       4
2322         unif_cell_shape       3
2323           marg_adhesion       1
2324  single_epith_cell_size       2
2325             bare_nuclei  -99999
2326             bland_chrom       2
2327           norm_nucleoli       3
2328                 mitoses       1
2329                   class       2
2330         clump_thickness       8
2331          unif_cell_size       2
2332         unif_cell_shape       1
2333           marg_adhesion       1
2334  single_epith_cell_size       5
2335             bare_nuclei       1
2336             bland_chrom       1
2337           norm_nucleoli       1
2338                 mitoses       1
2339                   class       2
2340         clump_thickness       9
2341          unif_cell_size       1
2342         unif_cell_shape       2
2343           marg_adhesion       6
2344  single_epith_cell_size       4
2345             bare_nuclei      10
2346             bland_chrom       7
2347           norm_nucleoli       7
2348                 mitoses       2
2349                   class       4
不幸的是,该脚本速度不是很快,并且需要很长时间才能使用大型数据帧执行

问题:是否有更优雅/更快的方法来实现这些结果

来自我的输入数据(csv文件)的示例:


如果性能很重要,但值的顺序发生了变化:

df = df.melt('id')
print (df.head())
        id         variable value
0  1000025  clump_thickness     5
1  1002945  clump_thickness     5
2  1015425  clump_thickness     3
3  1016277  clump_thickness     6
4  1017023  clump_thickness     4
或使用:

df = df.set_index('id').stack().rename_axis(['id','var']).reset_index(name='val')
print (df.head())
        id                     var val
0  1000025         clump_thickness   5
1  1000025          unif_cell_size   1
2  1000025         unif_cell_shape   1
3  1000025           marg_adhesion   1
4  1000025  single_epith_cell_size   2

您可以添加输入数据的样本吗?但它看起来像
堆栈
可能吗
df.stack().reset_index()
感谢您提供数据,但输出无法匹配。是否可以创建10行预期输出的输入数据?@jezrael对不起,我不明白你的意思!
df = df.set_index('id').stack().rename_axis(['id','var']).reset_index(name='val')
print (df.head())
        id                     var val
0  1000025         clump_thickness   5
1  1000025          unif_cell_size   1
2  1000025         unif_cell_shape   1
3  1000025           marg_adhesion   1
4  1000025  single_epith_cell_size   2