在 Python Pandas 中同时熔化多个列

Simultaneously melt multiple columns in Python Pandas

想知道 pd.melt 是否支持熔化多个列。我有以下示例尝试将 value_vars 作为列表列表,但出现错误:

ValueError: Location based indexing can only have [labels (MUST BE IN THE INDEX), slices of labels (BOTH endpoints included! Can be slices of integers if the index is integers), listlike of labels, boolean] types

使用pandas 0.23.1.

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],

         'State': ['Texas', 'Texas', 'Alabama'],

         'Name':['Aria', 'Penelope', 'Niko'],

         'Mango':[4, 10, 90],

         'Orange': [10, 8, 14], 

         'Watermelon':[40, 99, 43],

         'Gin':[16, 200, 34],

         'Vodka':[20, 33, 18]},

        columns=['City', 'State', 'Name', 'Mango', 'Orange', 'Watermelon', 'Gin', 'Vodka'])   City  State    Fruit Pounds Drink Ounces

0 Houston  Texas    Mango    4  Gin  16.0

1  Austin  Texas    Mango   10  Gin  200.0

2  Hoover Alabama    Mango   90  Gin  34.0

3 Houston  Texas   Orange   10 Vodka  20.0

4  Austin  Texas   Orange    8 Vodka  33.0

5  Hoover Alabama   Orange   14 Vodka  18.0

6 Houston  Texas Watermelon   40  nan   NaN

7  Austin  Texas Watermelon   99  nan   NaN

8  Hoover Alabama Watermelon   43  nan   NaNdf.melt(id_vars=['City', 'State'], 

    value_vars=[['Mango', 'Orange', 'Watermelon'], ['Gin', 'Vodka']],var_name=['Fruit', 'Drink'], 

    value_name=['Pounds', 'Ounces'])df1 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Mango', 'Orange', 'Watermelon'],

       var_name='Fruit', value_name='Pounds')

df2 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Gin', 'Vodka'], 

       var_name='Drink', value_name='Ounces')



df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])

df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])





df3 = (pd.concat([df1, df2],axis=1)

    .sort_index(level=2)

    .reset_index(level=2, drop=True)

    .reset_index())

print (df3)

   City  State    Fruit Pounds Drink Ounces

0  Austin  Texas    Mango   10  Gin  200.0

1  Hoover Alabama    Mango   90  Gin  34.0

2 Houston  Texas    Mango    4  Gin  16.0

3  Austin  Texas   Orange    8 Vodka  33.0

4  Hoover Alabama   Orange   14 Vodka  18.0

5 Houston  Texas   Orange   10 Vodka  20.0

6  Austin  Texas Watermelon   99  NaN   NaN

7  Hoover Alabama Watermelon   43  NaN   NaN

8 Houston  Texas Watermelon   40  NaN   NaN# pip install pyjanitor



import pandas as pd

import janitor as jn



fruits = ("Mango","Orange","Watermelon")

drinks = ("Gin","Vodka")

mapp = {key :"fruits" for key in fruits} | {key :"drinks" for key in drinks}



(df.rename(columns = lambda col: f"{col}_{fruits.index(col)}_pounds"

                if col in fruits

                else f"{col}_{drinks.index(col)}_ounces" 

                if col in drinks 

                else col)

.pivot_longer(index = slice('City', 'Name'), 

       names_to = ('generic', 'position', '.value'), 

       names_sep = '_')

.assign(temp = lambda df: df.generic.map(mapp))

.pivot_wider(index = [slice('City', 'Name'), 'position'], 

      names_from = 'temp')

.dropna(how='all', axis = 1)

.rename(columns = lambda col: col.replace("generic_","")

                .replace("_drinks","")

                .replace("_fruits",""))

.loc[:, ['City', 'State', 'fruits', 'pounds', 'drinks', 'ounces']]

)



   City  State   fruits pounds drinks ounces

0  Austin  Texas    Mango  10.0  Gin  200.0

1  Austin  Texas   Orange   8.0 Vodka  33.0

2  Austin  Texas Watermelon  99.0  NaN   NaN

3  Hoover Alabama    Mango  90.0  Gin  34.0

4  Hoover Alabama   Orange  14.0 Vodka  18.0

5  Hoover Alabama Watermelon  43.0  NaN   NaN

6 Houston  Texas    Mango   4.0  Gin  16.0

7 Houston  Texas   Orange  10.0 Vodka  20.0

8 Houston  Texas Watermelon  40.0  NaN   NaN

期望的输出:

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],

         'State': ['Texas', 'Texas', 'Alabama'],

         'Name':['Aria', 'Penelope', 'Niko'],

         'Mango':[4, 10, 90],

         'Orange': [10, 8, 14], 

         'Watermelon':[40, 99, 43],

         'Gin':[16, 200, 34],

         'Vodka':[20, 33, 18]},

        columns=['City', 'State', 'Name', 'Mango', 'Orange', 'Watermelon', 'Gin', 'Vodka'])   City  State    Fruit Pounds Drink Ounces

0 Houston  Texas    Mango    4  Gin  16.0

1  Austin  Texas    Mango   10  Gin  200.0

2  Hoover Alabama    Mango   90  Gin  34.0

3 Houston  Texas   Orange   10 Vodka  20.0

4  Austin  Texas   Orange    8 Vodka  33.0

5  Hoover Alabama   Orange   14 Vodka  18.0

6 Houston  Texas Watermelon   40  nan   NaN

7  Austin  Texas Watermelon   99  nan   NaN

8  Hoover Alabama Watermelon   43  nan   NaNdf.melt(id_vars=['City', 'State'], 

    value_vars=[['Mango', 'Orange', 'Watermelon'], ['Gin', 'Vodka']],var_name=['Fruit', 'Drink'], 

    value_name=['Pounds', 'Ounces'])df1 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Mango', 'Orange', 'Watermelon'],

       var_name='Fruit', value_name='Pounds')

df2 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Gin', 'Vodka'], 

       var_name='Drink', value_name='Ounces')



df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])

df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])





df3 = (pd.concat([df1, df2],axis=1)

    .sort_index(level=2)

    .reset_index(level=2, drop=True)

    .reset_index())

print (df3)

   City  State    Fruit Pounds Drink Ounces

0  Austin  Texas    Mango   10  Gin  200.0

1  Hoover Alabama    Mango   90  Gin  34.0

2 Houston  Texas    Mango    4  Gin  16.0

3  Austin  Texas   Orange    8 Vodka  33.0

4  Hoover Alabama   Orange   14 Vodka  18.0

5 Houston  Texas   Orange   10 Vodka  20.0

6  Austin  Texas Watermelon   99  NaN   NaN

7  Hoover Alabama Watermelon   43  NaN   NaN

8 Houston  Texas Watermelon   40  NaN   NaN# pip install pyjanitor



import pandas as pd

import janitor as jn



fruits = ("Mango","Orange","Watermelon")

drinks = ("Gin","Vodka")

mapp = {key :"fruits" for key in fruits} | {key :"drinks" for key in drinks}



(df.rename(columns = lambda col: f"{col}_{fruits.index(col)}_pounds"

                if col in fruits

                else f"{col}_{drinks.index(col)}_ounces" 

                if col in drinks 

                else col)

.pivot_longer(index = slice('City', 'Name'), 

       names_to = ('generic', 'position', '.value'), 

       names_sep = '_')

.assign(temp = lambda df: df.generic.map(mapp))

.pivot_wider(index = [slice('City', 'Name'), 'position'], 

      names_from = 'temp')

.dropna(how='all', axis = 1)

.rename(columns = lambda col: col.replace("generic_","")

                .replace("_drinks","")

                .replace("_fruits",""))

.loc[:, ['City', 'State', 'fruits', 'pounds', 'drinks', 'ounces']]

)



   City  State   fruits pounds drinks ounces

0  Austin  Texas    Mango  10.0  Gin  200.0

1  Austin  Texas   Orange   8.0 Vodka  33.0

2  Austin  Texas Watermelon  99.0  NaN   NaN

3  Hoover Alabama    Mango  90.0  Gin  34.0

4  Hoover Alabama   Orange  14.0 Vodka  18.0

5  Hoover Alabama Watermelon  43.0  NaN   NaN

6 Houston  Texas    Mango   4.0  Gin  16.0

7 Houston  Texas   Orange  10.0 Vodka  20.0

8 Houston  Texas Watermelon  40.0  NaN   NaN

我试过了,我得到了上述错误:

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],

         'State': ['Texas', 'Texas', 'Alabama'],

         'Name':['Aria', 'Penelope', 'Niko'],

         'Mango':[4, 10, 90],

         'Orange': [10, 8, 14], 

         'Watermelon':[40, 99, 43],

         'Gin':[16, 200, 34],

         'Vodka':[20, 33, 18]},

        columns=['City', 'State', 'Name', 'Mango', 'Orange', 'Watermelon', 'Gin', 'Vodka'])   City  State    Fruit Pounds Drink Ounces

0 Houston  Texas    Mango    4  Gin  16.0

1  Austin  Texas    Mango   10  Gin  200.0

2  Hoover Alabama    Mango   90  Gin  34.0

3 Houston  Texas   Orange   10 Vodka  20.0

4  Austin  Texas   Orange    8 Vodka  33.0

5  Hoover Alabama   Orange   14 Vodka  18.0

6 Houston  Texas Watermelon   40  nan   NaN

7  Austin  Texas Watermelon   99  nan   NaN

8  Hoover Alabama Watermelon   43  nan   NaNdf.melt(id_vars=['City', 'State'], 

    value_vars=[['Mango', 'Orange', 'Watermelon'], ['Gin', 'Vodka']],var_name=['Fruit', 'Drink'], 

    value_name=['Pounds', 'Ounces'])df1 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Mango', 'Orange', 'Watermelon'],

       var_name='Fruit', value_name='Pounds')

df2 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Gin', 'Vodka'], 

       var_name='Drink', value_name='Ounces')



df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])

df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])





df3 = (pd.concat([df1, df2],axis=1)

    .sort_index(level=2)

    .reset_index(level=2, drop=True)

    .reset_index())

print (df3)

   City  State    Fruit Pounds Drink Ounces

0  Austin  Texas    Mango   10  Gin  200.0

1  Hoover Alabama    Mango   90  Gin  34.0

2 Houston  Texas    Mango    4  Gin  16.0

3  Austin  Texas   Orange    8 Vodka  33.0

4  Hoover Alabama   Orange   14 Vodka  18.0

5 Houston  Texas   Orange   10 Vodka  20.0

6  Austin  Texas Watermelon   99  NaN   NaN

7  Hoover Alabama Watermelon   43  NaN   NaN

8 Houston  Texas Watermelon   40  NaN   NaN# pip install pyjanitor



import pandas as pd

import janitor as jn



fruits = ("Mango","Orange","Watermelon")

drinks = ("Gin","Vodka")

mapp = {key :"fruits" for key in fruits} | {key :"drinks" for key in drinks}



(df.rename(columns = lambda col: f"{col}_{fruits.index(col)}_pounds"

                if col in fruits

                else f"{col}_{drinks.index(col)}_ounces" 

                if col in drinks 

                else col)

.pivot_longer(index = slice('City', 'Name'), 

       names_to = ('generic', 'position', '.value'), 

       names_sep = '_')

.assign(temp = lambda df: df.generic.map(mapp))

.pivot_wider(index = [slice('City', 'Name'), 'position'], 

      names_from = 'temp')

.dropna(how='all', axis = 1)

.rename(columns = lambda col: col.replace("generic_","")

                .replace("_drinks","")

                .replace("_fruits",""))

.loc[:, ['City', 'State', 'fruits', 'pounds', 'drinks', 'ounces']]

)



   City  State   fruits pounds drinks ounces

0  Austin  Texas    Mango  10.0  Gin  200.0

1  Austin  Texas   Orange   8.0 Vodka  33.0

2  Austin  Texas Watermelon  99.0  NaN   NaN

3  Hoover Alabama    Mango  90.0  Gin  34.0

4  Hoover Alabama   Orange  14.0 Vodka  18.0

5  Hoover Alabama Watermelon  43.0  NaN   NaN

6 Houston  Texas    Mango   4.0  Gin  16.0

7 Houston  Texas   Orange  10.0 Vodka  20.0

8 Houston  Texas Watermelon  40.0  NaN   NaN

对每个类别使用双 melt,然后使用 concat,但是因为重复的值会为 MultiIndex 中的唯一 triples 添加 cumcount

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],

         'State': ['Texas', 'Texas', 'Alabama'],

         'Name':['Aria', 'Penelope', 'Niko'],

         'Mango':[4, 10, 90],

         'Orange': [10, 8, 14], 

         'Watermelon':[40, 99, 43],

         'Gin':[16, 200, 34],

         'Vodka':[20, 33, 18]},

        columns=['City', 'State', 'Name', 'Mango', 'Orange', 'Watermelon', 'Gin', 'Vodka'])   City  State    Fruit Pounds Drink Ounces

0 Houston  Texas    Mango    4  Gin  16.0

1  Austin  Texas    Mango   10  Gin  200.0

2  Hoover Alabama    Mango   90  Gin  34.0

3 Houston  Texas   Orange   10 Vodka  20.0

4  Austin  Texas   Orange    8 Vodka  33.0

5  Hoover Alabama   Orange   14 Vodka  18.0

6 Houston  Texas Watermelon   40  nan   NaN

7  Austin  Texas Watermelon   99  nan   NaN

8  Hoover Alabama Watermelon   43  nan   NaNdf.melt(id_vars=['City', 'State'], 

    value_vars=[['Mango', 'Orange', 'Watermelon'], ['Gin', 'Vodka']],var_name=['Fruit', 'Drink'], 

    value_name=['Pounds', 'Ounces'])df1 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Mango', 'Orange', 'Watermelon'],

       var_name='Fruit', value_name='Pounds')

df2 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Gin', 'Vodka'], 

       var_name='Drink', value_name='Ounces')



df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])

df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])





df3 = (pd.concat([df1, df2],axis=1)

    .sort_index(level=2)

    .reset_index(level=2, drop=True)

    .reset_index())

print (df3)

   City  State    Fruit Pounds Drink Ounces

0  Austin  Texas    Mango   10  Gin  200.0

1  Hoover Alabama    Mango   90  Gin  34.0

2 Houston  Texas    Mango    4  Gin  16.0

3  Austin  Texas   Orange    8 Vodka  33.0

4  Hoover Alabama   Orange   14 Vodka  18.0

5 Houston  Texas   Orange   10 Vodka  20.0

6  Austin  Texas Watermelon   99  NaN   NaN

7  Hoover Alabama Watermelon   43  NaN   NaN

8 Houston  Texas Watermelon   40  NaN   NaN# pip install pyjanitor



import pandas as pd

import janitor as jn



fruits = ("Mango","Orange","Watermelon")

drinks = ("Gin","Vodka")

mapp = {key :"fruits" for key in fruits} | {key :"drinks" for key in drinks}



(df.rename(columns = lambda col: f"{col}_{fruits.index(col)}_pounds"

                if col in fruits

                else f"{col}_{drinks.index(col)}_ounces" 

                if col in drinks 

                else col)

.pivot_longer(index = slice('City', 'Name'), 

       names_to = ('generic', 'position', '.value'), 

       names_sep = '_')

.assign(temp = lambda df: df.generic.map(mapp))

.pivot_wider(index = [slice('City', 'Name'), 'position'], 

      names_from = 'temp')

.dropna(how='all', axis = 1)

.rename(columns = lambda col: col.replace("generic_","")

                .replace("_drinks","")

                .replace("_fruits",""))

.loc[:, ['City', 'State', 'fruits', 'pounds', 'drinks', 'ounces']]

)



   City  State   fruits pounds drinks ounces

0  Austin  Texas    Mango  10.0  Gin  200.0

1  Austin  Texas   Orange   8.0 Vodka  33.0

2  Austin  Texas Watermelon  99.0  NaN   NaN

3  Hoover Alabama    Mango  90.0  Gin  34.0

4  Hoover Alabama   Orange  14.0 Vodka  18.0

5  Hoover Alabama Watermelon  43.0  NaN   NaN

6 Houston  Texas    Mango   4.0  Gin  16.0

7 Houston  Texas   Orange  10.0 Vodka  20.0

8 Houston  Texas Watermelon  40.0  NaN   NaN

一个已经很好回答的老问题;这只是一种替代方法,它依赖于 pyjanitor 的辅助函数,特别是 pivot_longer 和 pivot_wider,来帮助重塑过程:

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],

         'State': ['Texas', 'Texas', 'Alabama'],

         'Name':['Aria', 'Penelope', 'Niko'],

         'Mango':[4, 10, 90],

         'Orange': [10, 8, 14], 

         'Watermelon':[40, 99, 43],

         'Gin':[16, 200, 34],

         'Vodka':[20, 33, 18]},

        columns=['City', 'State', 'Name', 'Mango', 'Orange', 'Watermelon', 'Gin', 'Vodka'])   City  State    Fruit Pounds Drink Ounces

0 Houston  Texas    Mango    4  Gin  16.0

1  Austin  Texas    Mango   10  Gin  200.0

2  Hoover Alabama    Mango   90  Gin  34.0

3 Houston  Texas   Orange   10 Vodka  20.0

4  Austin  Texas   Orange    8 Vodka  33.0

5  Hoover Alabama   Orange   14 Vodka  18.0

6 Houston  Texas Watermelon   40  nan   NaN

7  Austin  Texas Watermelon   99  nan   NaN

8  Hoover Alabama Watermelon   43  nan   NaNdf.melt(id_vars=['City', 'State'], 

    value_vars=[['Mango', 'Orange', 'Watermelon'], ['Gin', 'Vodka']],var_name=['Fruit', 'Drink'], 

    value_name=['Pounds', 'Ounces'])df1 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Mango', 'Orange', 'Watermelon'],

       var_name='Fruit', value_name='Pounds')

df2 = df.melt(id_vars=['City', 'State'], 

       value_vars=['Gin', 'Vodka'], 

       var_name='Drink', value_name='Ounces')



df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])

df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])





df3 = (pd.concat([df1, df2],axis=1)

    .sort_index(level=2)

    .reset_index(level=2, drop=True)

    .reset_index())

print (df3)

   City  State    Fruit Pounds Drink Ounces

0  Austin  Texas    Mango   10  Gin  200.0

1  Hoover Alabama    Mango   90  Gin  34.0

2 Houston  Texas    Mango    4  Gin  16.0

3  Austin  Texas   Orange    8 Vodka  33.0

4  Hoover Alabama   Orange   14 Vodka  18.0

5 Houston  Texas   Orange   10 Vodka  20.0

6  Austin  Texas Watermelon   99  NaN   NaN

7  Hoover Alabama Watermelon   43  NaN   NaN

8 Houston  Texas Watermelon   40  NaN   NaN# pip install pyjanitor



import pandas as pd

import janitor as jn



fruits = ("Mango","Orange","Watermelon")

drinks = ("Gin","Vodka")

mapp = {key :"fruits" for key in fruits} | {key :"drinks" for key in drinks}



(df.rename(columns = lambda col: f"{col}_{fruits.index(col)}_pounds"

                if col in fruits

                else f"{col}_{drinks.index(col)}_ounces" 

                if col in drinks 

                else col)

.pivot_longer(index = slice('City', 'Name'), 

       names_to = ('generic', 'position', '.value'), 

       names_sep = '_')

.assign(temp = lambda df: df.generic.map(mapp))

.pivot_wider(index = [slice('City', 'Name'), 'position'], 

      names_from = 'temp')

.dropna(how='all', axis = 1)

.rename(columns = lambda col: col.replace("generic_","")

                .replace("_drinks","")

                .replace("_fruits",""))

.loc[:, ['City', 'State', 'fruits', 'pounds', 'drinks', 'ounces']]

)



   City  State   fruits pounds drinks ounces

0  Austin  Texas    Mango  10.0  Gin  200.0

1  Austin  Texas   Orange   8.0 Vodka  33.0

2  Austin  Texas Watermelon  99.0  NaN   NaN

3  Hoover Alabama    Mango  90.0  Gin  34.0

4  Hoover Alabama   Orange  14.0 Vodka  18.0

5  Hoover Alabama Watermelon  43.0  NaN   NaN

6 Houston  Texas    Mango   4.0  Gin  16.0

7 Houston  Texas   Orange  10.0 Vodka  20.0

8 Houston  Texas Watermelon  40.0  NaN   NaN

相关推荐

  • Spring部署设置openshift

    Springdeploymentsettingsopenshift我有一个问题让我抓狂了三天。我根据OpenShift帐户上的教程部署了spring-eap6-quickstart代码。我已配置调试选项,并且已将Eclipse工作区与OpehShift服务器同步-服务器上的一切工作正常,但在Eclipse中出现无法消除的错误。我有这个错误:cvc-complex-type.2.4.a:Invali…
    2025-04-161
  • 检查Java中正则表达式中模式的第n次出现

    CheckfornthoccurrenceofpatterninregularexpressioninJava本问题已经有最佳答案,请猛点这里访问。我想使用Java正则表达式检查输入字符串中特定模式的第n次出现。你能建议怎么做吗?这应该可以工作:MatchResultfindNthOccurance(intn,Patternp,CharSequencesrc){Matcherm=p.matcher…
    2025-04-161
  • 如何让 JTable 停留在已编辑的单元格上

    HowtohaveJTablestayingontheeditedcell如果有人编辑JTable的单元格内容并按Enter,则内容会被修改并且表格选择会移动到下一行。是否可以禁止JTable在单元格编辑后转到下一行?原因是我的程序使用ListSelectionListener在单元格选择上同步了其他一些小部件,并且我不想在编辑当前单元格后选择下一行。Enter的默认绑定是名为selectNext…
    2025-04-161
  • Weblogic 12c 部署

    Weblogic12cdeploy我正在尝试将我的应用程序从Tomcat迁移到Weblogic12.2.1.3.0。我能够毫无错误地部署应用程序,但我遇到了与持久性提供程序相关的运行时错误。这是堆栈跟踪:javax.validation.ValidationException:CalltoTraversableResolver.isReachable()threwanexceptionatorg.…
    2025-04-161
  • Resteasy Content-Type 默认值

    ResteasyContent-Typedefaults我正在使用Resteasy编写一个可以返回JSON和XML的应用程序,但可以选择默认为XML。这是我的方法:@GET@Path("/content")@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})publicStringcontentListRequestXm…
    2025-04-161
  • 代码不会停止运行,在 Java 中

    thecodedoesn'tstoprunning,inJava我正在用Java解决项目Euler中的问题10,即"Thesumoftheprimesbelow10is2+3+5+7=17.Findthesumofalltheprimesbelowtwomillion."我的代码是packageprojecteuler_1;importjava.math.BigInteger;importjava…
    2025-04-161
  • Out of memory java heap space

    Outofmemoryjavaheapspace我正在尝试将大量文件从服务器发送到多个客户端。当我尝试发送大小为700mb的文件时,它显示了"OutOfMemoryjavaheapspace"错误。我正在使用Netbeans7.1.2版本。我还在属性中尝试了VMoption。但仍然发生同样的错误。我认为阅读整个文件存在一些问题。下面的代码最多可用于300mb。请给我一些建议。提前致谢publicc…
    2025-04-161
  • Log4j 记录到共享日志文件

    Log4jLoggingtoaSharedLogFile有没有办法将log4j日志记录事件写入也被其他应用程序写入的日志文件。其他应用程序可以是非Java应用程序。有什么缺点?锁定问题?格式化?Log4j有一个SocketAppender,它将向服务发送事件,您可以自己实现或使用与Log4j捆绑的简单实现。它还支持syslogd和Windows事件日志,这对于尝试将日志输出与来自非Java应用程序…
    2025-04-161